[英]How to import lldb in a python script
根據 LLDB 主頁,可以在 python 腳本中導入 LLDB,如下所示:
import lldb
從發布包安裝 LLDB 后(在 Lubuntu 15.04 上:sudo apt-get install lldb),我收到以下錯誤:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/dist-packages/lldb/__init__.py", line 52, in <module>
_lldb = swig_import_helper()
File "/usr/lib/python2.7/dist-packages/lldb/__init__.py", line 44, in swig_import_helper
ImportError: No module named _lldb
這是意料之中的! LLDB 頁面說:
LLDB 具有 Python 腳本功能,並提供了自己的 Python 模塊,名為 lldb。 如果在命令行 lldb 應用程序中運行腳本,則 Python 模塊將自動可用。 但是,如果腳本要由命令行應用程序之外的 Python 解釋器運行,則可以使用 PYTHONPATH 環境變量讓 Python 解釋器找到 lldb 模塊。
可以通過使用 -P 標志調用命令行 lldb 工具來獲得正確的路徑:
> export PYTHONPATH=`$llvm/build/Debug+Asserts/bin/lldb -P`
如果您使用不同的構建目錄或進行了發布構建,您可能需要調整上述內容以滿足您的需求。
因此,那些有足夠信心自己構建 LLDB 的人得到了明確的指示,而只想使用已發布包的菜鳥則得到了模糊的解釋……
對於從發布包安裝所有內容的最基本情況,有沒有人弄清楚“調整上述內容以滿足您的需要”的確切含義? lldb -P 報的路徑沒有解決問題:
user@user-VirtualBox:~$ lldb -P
/usr/lib/x86_64-linux-gnu/python2.7/site-packages
user@user-VirtualBox:~$ ls /usr/lib/x86_64-linux-gnu/python2.7/site-packages
ls: cannot access /usr/lib/x86_64-linux-gnu/python2.7/site-packages: No such file or directory
看起來 lldb python 包安裝的符號鏈接是拙劣的。 如果您查看/usr/lib/llvm-3.6/lib/python2.7/site-packages/lldb
,您會看到三個損壞的 simlink 引用了不存在的x86_64-linux-gnu
目錄。 這為我修復了它(在 Ubuntu 14.04 上測試,而不是 Lubuntu,但我假設問題是相同的):
cd /usr/lib/llvm-3.6/lib/python2.7/site-packages/lldb
sudo ln -sf ../../../liblldb.so.1 _lldb.so
sudo ln -sf ../../../libLLVM-3.6.0.so.1 libLLVM-3.6.0.so.1
sudo ln -sf ../../../libLLVM-3.6.0.so.1 libLLVM-3.6.so.1
export PYTHONPATH='/usr/lib/llvm-3.6/lib/python2.7/site-packages'
vagrant@Ubuntu:~$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import lldb
>>>
lldb -P
顯然試圖為/usr/lib/x86_64-linux-gnu/python2.7
python 安裝提供site-packages
(正如您所觀察到的,它不存在)。
您得到的回溯表明lldb
已添加到/usr/lib/python2.7
python 安裝中(這是它的__init__.py
執行的地方)。
我會嘗試將/usr/lib/python2.7/site-packages
目錄而不是lldb -P
結果設置/添加到PYTHONPATH
。
你可以嘗試在 lldb-dev 郵件列表上詢問這個問題,或者甚至向 lldb.llvm.org bugzilla 提交一個錯誤。 lldb for Linux 比 OSX 版本處於更早的開發階段,可能大多數 Linux 用戶實際上都是自己構建它以獲得最新的好處,所以沒有人注意到這個問題。
https://bugs.launchpad.net/ubuntu/+source/llvm-defaults/+bug/1972855
啟動 lldb 會導致以下情況發生:
$ lldb
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
(lldb)
這會導致問題,例如,QtCreator 在嘗試使用 lldb 調試任何內容時會停止。
$ lldb -P
給出以下路徑:
/usr/lib/local/lib/python3.10/dist-packages
但是,該路徑不存在:
$ ls -l /usr/lib/local/lib/python3.10/dist-packages
ls: cannot access '/usr/lib/local/lib/python3.10/dist-packages': No such file or directory
不過,python3-lldb-14 包提供了這個路徑:
/usr/lib/llvm-14/lib/python3.10/dist-packages/
創建從/usr/lib/llvm-14/lib/python3.10/dist-packages
到/usr/lib/local/lib/python3.10/dist-packages
的符號鏈接使事情按預期工作:
sudo ln -s /usr/lib/llvm-14/lib/python3.10/dist-packages /usr/lib/local/lib/python3.10/dist-packages
$ ls -l /usr/lib/local/lib/python3.10/dist-packages && lldb
lrwxrwxrwx 1 root root 45 May 10 15:23 /usr/lib/local/lib/python3.10/dist-packages -> /usr/lib/llvm-14/lib/python3.10/dist-packages
(lldb)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.