如何在python脚本中导入lldb

时间:2015-06-16 14:03:24

标签: python linux python-2.7 lldb

根据LLDB主页,LLDB可以在这样的python脚本中导入:

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外部的Python解释器运行的   命令行应用程序,PYTHONPATH环境变量即可   曾经让Python解释器找到lldb模块。

     

通过调用命令行lldb可以获得正确的路径   带有-P标志的工具:

> 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

3 个答案:

答案 0 :(得分:10)

看起来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
>>> 

答案 1 :(得分:1)

lldb -P显然试图为site-packages python安装提供/usr/lib/x86_64-linux-gnu/python2.7(正如您所观察到的那样,它不存在)。

您获得的回溯表明lldb已添加到/usr/lib/python2.7 python安装(其__init__.py执行的位置)。

我尝试设置/添加PYTHONPATH /usr/lib/python2.7/site-packages目录而不是lldb -P结果。

答案 2 :(得分:0)

您可以尝试在lldb-dev邮件列表中询问此问题,甚至可以使用lldb.llvm.org bugzilla填写错误。 lldb for Linux处于开发的早期阶段,而不是OSX版本,可能是Linux上的大多数用户实际上都是自己构建它以获得最新的优点,因此没有人注意到这个问题。