2010-02-24 3 views
1

Je suis actuellement en train de déboguer un projet qui utilise une bibliothèque externe (LibFirm). Quand j'appelle des fonctions de bibliothèque, je ne peux pas vraiment voir ce qui se passe là-bas avec gdb (c'est-à-dire que je ne peux pas inspecter les variables locales et autres).Utilisation de GDB avec des bibliothèques externes

La bibliothèque est open source et je l'ai compilée moi-même, donc je pense qu'il devrait être possible de laisser gdb s'y pencher aussi. Comment?

Ce que je vois actuellement est

(gdb) bt 
#0 0x00994422 in __kernel_vsyscall() 
#1 0x002704d1 in *__GI_raise (sig=6) 
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 
#2 0x00273932 in *__GI_abort() at abort.c:92 
#3 0x00269648 in *__GI___assert_fail (
    assertion=0xd238f4 "_get_type_state(ctx.frame_tp) == layout_fixed", 
    file=0xd23458 "be/beabi.c", line=1879, function=0xd23d0d "modify_irg") 
    at assert.c:81 
#4 0x00b219e3 in ??() from /usr/local/lib/libfirm.so.0 
#5 0x00b21df0 in be_abi_introduce() from /usr/local/lib/libfirm.so.0 
#6 0x00b59b77 in ??() from /usr/local/lib/libfirm.so.0 
#7 0x00b5b4a5 in be_main() from /usr/local/lib/libfirm.so.0 
#8 0x0807daa0 in main (argc=3, argv=0xbffff914) at main.cc:243 
(gdb) frame 8 
#8 0x0807daa0 in main (argc=3, argv=0xbffff914) at main.cc:243 
243     be_main(output, "a.s"); 
(gdb) frame 4 
#4 0x00b219e3 in ??() from /usr/local/lib/libfirm.so. 

cadre 8 est joli tout cadre 4 ne me dit rien. J'ai ajouté

dir /usr/local/include/libfirm 
dir /home/thomas/Dev/foreign/libfirm 

à mon .gdbinit, donc gdb doivent trouver les fichiers d'en-tête et source du lib.

Répondre

0

Je devais utiliser ./configure --enable-debug (CFLAGS="-g" était activé par défaut, mais il peut ne pas être dans d'autres projets, alors rappelez-le). En outre, vous pouvez utiliser CFLAGS="-g -O0" (au lieu de seulement -g) pour garder le code lisible.

Questions connexes