I'm getting this error when launching a program in gdb:
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'
Google turned up this bug report: http://osdir.com/ml/debian-gcc/2014-02/msg00061.html
This bug report list using the command python print sys.path
on the gdb prompt. However, when I try to use any python on the gdb prompt, this happens:
(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.
I'm using Ubuntu 14.04 LTS, relevant version information:
$ 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
Clearly, something in my setup is broken. Is it python, gdb, or something else?
print
is now a function; use(gdb) python print(sys.path)
– Kilowatthourlibstdc++.so.6.0.19-gdb.py
ought to be fixed as per that email message, and possibly ported to python 3 (I haven't looked at it really closely yet). But if your target is compiled with the system version of gcc (i.e. you're not cross-compiling nor using a version of gcc different from the one that came with the system), you can just do(gdb) python sys.path.append("/usr/share/gcc-4.8/python")
; then it won't matter that thelibstdc++.so.6.0.19-gdb.py
script adds a nonexistent directory to the path. – Kilowatthourpython sys.path.append("/usr/share/gcc-4.8/python")
– Ambivalence