Version courte de la question : Comment puis-je faire en sorte que gdb utilise les symboles de débogage pour libc ?
Version plus longue : Je suis en train de déboguer un programme avec gdb et je veux voir des informations sur un futex utilisé par libc. Cependant, à un moment donné pendant le débogage, j'obtiens une sortie telle que :
Catchpoint 2 (call to syscall futex), 0x00007ffff772b73e in ?? () from /lib/libc.so.6
(gdb) bt
#0 0x00007ffff772b73e in ?? () from /lib/libc.so.6
#1 0x00007ffff767fb90 in ?? () from /lib/libc.so.6
#2 0x00007ffff767a4c0 in vfprintf () from /lib/libc.so.6
#3 0x00007ffff768565a in printf () from /lib/libc.so.6
....
Quand je cours info sharedlibrary
dans gdb au point d'arrêt que je vois :
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x00007ffff7dddaf0 0x00007ffff7df6704 Yes (*) /lib64/ld-linux-x86-64.so.2
0x00007ffff7bc53e0 0x00007ffff7bd1388 Yes (*) /lib/libpthread.so.0
0x00007ffff79ba190 0x00007ffff79bd7d8 Yes (*) /lib/librt.so.1
0x00007ffff76538c0 0x00007ffff7766c60 Yes (*) /lib/libc.so.6
0x00007ffff6c1fd80 0x00007ffff6c303c8 Yes (*) /lib/libgcc_s.so.1
(*): Shared library is missing debugging information.
Et quand je cours ldd
Je vois :
linux-vdso.so.1 => (0x00007ffff7fde000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007ffff7dbf000)
librt.so.1 => /lib/librt.so.1 (0x00007ffff7bb6000)
libc.so.6 => /lib/libc.so.6 (0x00007ffff7833000)
/lib64/ld-linux-x86-64.so.2 (0x00007ffff7fdf000)
J'utilise Ubuntu 10.04 et je pense que la version de la libc avec les symboles de débogage est en /usr/lib/debug/lib
. J'ai essayé de régler mon LD_LIBRARY_PATH
variable de l'avoir à l'avant du chemin mais cela ne semble pas faire de différence.
Je ne sais pas exactement comment le programme choisit les bibliothèques partagées à charger, si cela se fait au moment de l'exécution ou de la compilation (j'ai supposé que c'était au moment de l'exécution, mais je n'en suis plus sûr). Donc toute information sur la façon de faire en sorte que gdb utilise la version de débogage de libc sera appréciée.