【问题标题】:How to import lldb in a python script如何在 python 脚本中导入 lldb
【发布时间】:2015-09-01 09:52:07
【问题描述】:

根据 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 模块。

可以通过命令行调用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

【问题讨论】:

    标签: python linux python-2.7 lldb


    【解决方案1】:

    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

    【讨论】:

    • 感谢您的建议,但不幸的是,我收到了相同的错误消息:-(
    【解决方案2】:

    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
    >>> 
    

    【讨论】:

    • 仅供参考 - 在 Ubuntu 16.04.3 上按照这些说明进行操作后,我还必须使用 install the six moduleapt-get install python-six
    【解决方案3】:

    您可以尝试在 lldb-dev 邮件列表中询问此问题,或者甚至向 lldb.llvm.org bugzilla 提交错误。 lldb for Linux 比 OSX 版本处于更早的开发阶段,可能大多数 Linux 用户实际上都是自己构建它以获得最新的好处,所以没有人注意到这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-17
      • 2012-12-23
      • 2018-02-10
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2014-03-21
      • 2018-02-11
      相关资源
      最近更新 更多