18
在gdb启动程序时,我得到这个错误:的Ubuntu 14.04,GCC 4.8.4:GDB漂亮打印不因为Python问题的工作
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Traceback (most recent call last):
File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in <module>
from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named 'libstdcxx'
谷歌打开了这个错误报告:http://osdir.com/ml/debian-gcc/2014-02/msg00061.html 这个错误报告列表在gdb提示符下使用命令python print sys.path
。然而,当我尝试使用任何蟒蛇在gdb提示,出现这种情况:
(gdb) python print sys.path
File "<string>", line 1
print sys.path
^
SyntaxError: invalid syntax
Error while executing Python code.
(gdb) python print "Hello"
File "<string>", line 1
print "HellO"
^
SyntaxError: invalid syntax
Error while executing Python code.
我使用Ubuntu 14.04 LTS,相关版本信息:
$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4
$ gdb --version
GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
$ python --version
Python 2.7.6
显然,东西在我的设置是破碎。是python,gdb还是其他的?
Ubuntu 14.04用python 3构建gdb,所以'print'现在是一个函数;使用'(gdb)python print(sys.path)' –
谢谢,这就回答了这个问题。但是,原始错误“ImportError:No module named'libstdcxx'”仍然存在。这是否意味着这个脚本需要转换为python 3? – Philipp
'libstdC++。so.6.0.19-gdb.py'中的脚本应该根据该电子邮件消息进行修复,并且可能会移植到python 3(我还没有真正仔细查看它)。但是如果你的目标是用系统版本的gcc编译的(例如你不是交叉编译,也不使用与系统附带的版本不同的gcc),你可以执行'(gdb)python sys.path .append( “/ USR /共享/ GCC-4.8 /蟒”)';那么'libstdC++。so.6.0.19-gdb.py'脚本将一个不存在的目录添加到路径中并不重要。 –