问题描述
在Linux下使用lldb进行调试时,在输入lldb
命令后报错:
Traceback (most recent call last):
File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'lldb.embedded_interpreter'
此外,在使用lldb时,也会出现python模块的其它报错问题。
问题原因
lldb会自带一个python包,在lldb的安装目录内。例如,我安装的lldb自带的python路径为/usr/lib/llvm-14/lib/python3.8/site-packages
,该目录下只有一个lldb
包。如下图:
但是,lldb的默认python路径并不是其自带的python路径,且默认路径错误或不存在,导致lldb找不到它的lldb
包,因此报错No module named 'lldb.embedded_interpreter'
解决方法
- 使用
lldb -P
命令查看lldb默认的python路径:
我的lldb默认python路径为/usr/lib/lib/python3.8/site-packages
。(这个路径并不存在,导致报错) - 在lldb的默认python路径下创建文件夹,注意这里不需要创建
site-packages
,只需要到python3.8
即可。
可以使用sudo mkdir -p <lldb默认python路径>
,如我的为sudo mkdir -p /usr/lib/lib/python3.8
- 最重要的一步:在lldb默认python路径下,创建一个指向lldb自带的python的符号链接:
sudo ln -s <lldb自带的python路径> <lldb默认python路径>
。例如我的为:sudo ln -s /usr/lib/llvm-14/lib/python3.8/site-packages /usr/lib/lib/python3.8
注意:这里<lldb自带的python路径>
需要包含site-packages
,<lldb默认python路径>
不需要包含site-packages
这样一来,在默认路径下就可以访问到lldb自带的python包了:
- 再次尝试
lldb
命令,发现没有报错:
参考:
https://bugs.launchpad.net/ubuntu/+source/llvm-defaults/+bug/1972855