aca*_*ola 1 python linux python-2.7 lldb
根据LLDB主页,LLDB可以在python脚本中导入,如下所示:
import lldb
Run Code Online (Sandbox Code Playgroud)
从发布包安装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
Run Code Online (Sandbox Code Playgroud)
这是预料之中的!LLDB页面说:
LLDB具有Python脚本功能,并提供自己的名为lldb的Python模块.如果脚本在命令行lldb应用程序内运行,则Python模块将自动可用.但是,如果脚本要由命令行应用程序外部的Python解释器运行,则可以使用PYTHONPATH环境变量让Python解释器找到lldb模块.
通过使用-P标志调用命令行lldb工具可以获得正确的路径:
Run Code Online (Sandbox Code Playgroud)> 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
Run Code Online (Sandbox Code Playgroud)
std*_*out 10
看起来像lldb python包安装的符号链接是拙劣的.如果您查看,/usr/lib/llvm-3.6/lib/python2.7/site-packages/lldb
您将看到三个断开的simlinks引用不存在的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
>>>
Run Code Online (Sandbox Code Playgroud)