La impresora bonita de Python para depurar variables stdlib no funcionará

Seguí esta publicación para depurar las variables de una manera bonita. El valor de las cadenas no aparece en eclipse mars CDT

sin embargo terminé teniendo un mensaje de error como sigue:

File "/usr/share/gdb/auto-load/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19-gdb.py", line 63, in  from libstdcxx.v6.printers import register_libstdcxx_printers ImportError: No module named 'libstdcxx' 

¿Cómo puedo resolver el problema?

Parece que su .gdbinit no tiene el contenido correcto o no se está ejecutando.

Asegúrese de que la ruta agregada sea la correcta para su máquina y que el archivo gdbinit se esté ejecutando.

Ya que está recibiendo ese error, solo debería ser necesario agregar la ruta correcta a Python.

Aquí hay una muestra de seguimiento que primero no funciona y luego funciona una vez que se corrige la ruta:

 $ cat hello.cc #include  using namespace std; int main() { string mystring = "my string here"; return 0; } $ g++ hello.cc -g -o hello.elf $ gdb hello.elf --quiet Reading symbols from hello.elf...done. (gdb) b hello.cc:6 Breakpoint 1 at 0x400863: file hello.cc, line 6. (gdb) r Starting program: /tmp/x/hello.elf 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  from libstdcxx.v6.printers import register_libstdcxx_printers ImportError: No module named 'libstdcxx' Breakpoint 1, main () at hello.cc:6 6 return 0; (gdb) p mystring $1 = {static npos = , _M_dataplus = {> = {<__gnu_cxx::new_allocator> = {}, }, _M_p = 0x602028 "my string here"}} (gdb) python >import sys >sys.path.insert(0, '/usr/share/gcc-4.8/python/') >end (gdb) r The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /tmp/x/hello.elf Breakpoint 1, main () at hello.cc:6 6 return 0; (gdb) p mystring $2 = "my string here" (gdb) 

Información de la versión para el ejemplo anterior:

 $ g++ --version g++ (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $ gdb --version GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1 Copyright (C) 2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later  This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64-linux-gnu". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word". 

Cuando se utiliza Eclipse CDT

Cuando utilice Eclipse CDT, debe especificar el archivo gdbinit manualmente. Eclipse CDT inicia GDB con la --nx , lo que evita que GDB .gdbinit automáticamente los archivos .gdbinit . En su lugar, debe especificar un archivo de inicio apropiado de CDT en la configuración de inicio:

gdbinit en cdt

Además, puede cambiar su inicio predeterminado gdbinit para la nueva configuración de inicio en las Preferencias como se muestra en este cuadro de diálogo:

gdb init predeterminado