web-dev-qa-db-fra.com

GDB se bloque avec: ImportError: Aucun module nommé libstdcxx.v6.printers

J'ai un problème avec GDB. Chaque fois que j'essaie de déboguer un programme C++, juste après l'avoir exécuté, GDB donne cette erreur:

(gdb) run
Starting program: /home/errikos/Workspaces/tests/a.out 
Traceback (most recent call last):
  File "/usr/lib/debug/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18-gdb.py", line 59, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named libstdcxx.v6.printers
Traceback (most recent call last):
  File "/usr/lib/debug/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.18-gdb.py", line 59, in <module>
    from libstdcxx.v6.printers import register_libstdcxx_printers
ImportError: No module named libstdcxx.v6.printers

Après cela, GDB continue de s'exécuter (c'est-à-dire qu'il ne plante pas complètement).

Je suis conscient qu'il existe plusieurs rapports de bogues à ce sujet ( ici , ici et ici ). Dans le deuxième rapport, il est également affirmé qu'un correctif a été publié. Dans le troisième, il y a une solution de contournement par lien symbolique, qui ne m'a pas fonctionné (et que je n'aime pas, même si cela a fonctionné).

Quelqu'un a-t-il trouvé une solution de contournement? Un paquet manquant?

Remarque: J'ai les versions de test de Ubuntu Toolchain (ppa: ubuntu-toolchain-r/test) activées par PPA.

14
errikos

C'est un bogue dans /usr/lib/debug/usr/lib/$triple/libstdc++.so.6.0.18-gdb.py; s'il fonctionnait correctement, vous ne verriez qu'une seule fois le ImportError, et les jolies imprimantes fonctionneraient.

Voir http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=701935#18 pour des informations sur ce qui ne va pas ici. Cela fonctionnait bien dans gcc-4.7 de Debian, mais jusqu'à récemment, ne fonctionnait pas dans gcc-4.8 sur Debian. Je ne sais pas si j'ai même essayé ceci avec gcc-4.6.

Quoi qu'il en soit, vous pouvez patcher ce fichier pour le regarder au bon endroit.

7
SamB