Verwendung der Debug-Version von libc
Kurzfassung der Frage: Wie kann ich gdb dazu bringen, die Debugsymbole für libc zu verwenden?
Längere Version: Ich debugge ein Programm mit gdb und möchte Informationen zu einem von libc verwendeten Futex sehen. Irgendwann während des Debuggens erhalte ich jedoch folgende Ausgaben:
<code>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 .... </code>
Wenn ich renneinfo sharedlibrary
in gdb am breakpoint sehe ich:
<code>(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. </code>
Und wenn ich renneldd
Aha:
<code>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) </code>
Ich benutze Ubuntu 10.04 und ich denke, dass die Version von libc mit Debug-Symbolen in ist/usr/lib/debug/lib
. Ich habe versucht, meineLD_LIBRARY_PATH
variabel, um dies an der Spitze des Pfades zu haben, aber das schien keinen Unterschied zu machen.
Ich bin nicht ganz sicher, wie das Programm auswählt, welche gemeinsam genutzten Bibliotheken geladen werden sollen, ob dies zur Laufzeit oder zur Kompilierungszeit festgelegt wird (ich habe eine Art Laufzeit angenommen, bin mir aber jetzt nicht sicher). Daher sind Informationen darüber, wie Sie gdb dazu bringen, die Debug-Version von libc zu verwenden, willkommen.