2015-06-25 29 views
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还是其他的?

+1

Ubuntu 14.04用python 3构建gdb,所以'print'现在是一个函数;使用'(gdb)python print(sys.path)' –

+1

谢谢,这就回答了这个问题。但是,原始错误“ImportError:No module named'libstdcxx'”仍然存在。这是否意味着这个脚本需要转换为python 3? – Philipp

+11

'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'脚本将一个不存在的目录添加到路径中并不重要。 –

回答

12

我将此内容发布为答案,这样其他人就可以轻松找到答案。 Mark Plotnick和webbertiger的评论是实际的答案。

总之,这里是我工作:

  • 创建一个〜/ .gdbinit中
  • 新增python sys.path.append("/usr/share/gcc-4.8/python");该文件

我使用Eclipse CDT所以我检查该文件正在窗口>​​首选项> GDB> GDB命令文件中使用。