Nicht Die Debug-Shared Library - Symbole Nicht Ordnungsgemäß Geladen

Ich gerade Schreibe, eine kleine Bibliothek, und ich möchte um es zu überprüfen auf Dichtheit (unter anderem), aber für einige Grund gdb ist nicht das laden der library-Symbole. Ich habe gelesen, dass viele andere posts hier (und diversen anderen stellen im internet) über diese, aber ich kann nicht scheinen, um eine Lösung zu finden. Hier ist, was Los ist:

Ich bin kompilieren Sie die shared-Bibliothek mit folgenden flags (diese sind in den letzten shared-library, sowie alle Objekt-Dateien):

CFLAGS=-Wall -O0 -g -fPIC

Ebenfalls, ich bin kompilieren Sie das binäre memtest (die client-Anwendung für die Bibliothek) zu prüfen, memory-leaks und solche, die mit diesen flags

CFLAGS=-Wall -O0 -g

Nun, ich trug ein NULL-Zeiger in die Bibliothek um zu testen, ob ich verfolgen konnte durch Sie, und "debug" der Zeiger (d.h. er macht ihn zum Absturz zu bringen). Also versuche ich, um es durch den gdb, aber es ist ein no go. Die Ausgabe von info sharedlibrary ist die gleiche für sowohl die ausführbare Datei und die core:

(gdb) info sharedlibrary
From        To          Syms Read   Shared Object Library
... Some libraries I am not worried about debugging...
0x00d37340  0x00d423a4  Yes (*)     /home/raged/MyLIB/memtest/../lib/libMyLIB.so.0 <--- My lib
.... and some more....
(*): Shared library is missing debugging information.

Wie Sie sehen können, es ist nicht das laden der debug-Informationen. Ich bin mir nicht sicher, warum dies ist. Ich habe gebaut und verknüpft alles mit der -g Flagge, und ich versuche sogar -ggdb und -g3 aber nichts scheint zu funktionieren. Wenn ich laden Sie in einem core-dump, das ist, was ich sehe:

...some libs...
Reading symbols from /home/raged/MyLIB/memtest/../lib/libMyLIB.so.0...done.
Loaded symbols for /home/raged/MyLIB/memtest/../lib/libMyLIB.so.0
Reading symbols from /usr/lib/libstdc++.so.6...(no debugging symbols found)...done.
...some more libs...

Beachten Sie, wie meine Bibliothek nicht geben (no debugging symbols found) Fehler - jemand irgendwelche Ideen, warum? Wie ich schon sagte, ich bin nicht in der Lage zu Debuggen, dies durch ausführen des Programms gdb ./memtest oder durch Debuggen der core-Datei.

Vielen Dank für Ihre Hilfe.

BEARBEITEN Es ist vielleicht auch wichtig zu beachten, dass (wenn Sie nicht erkennen, die durch den Pfad") diese Bibliothek ist eine lokale gemeinsam genutzte Bibliothek (d.h. ich bin mit -Wl,-rpath link/laden)

EDIT2 Es scheint meine version von GDB war out-of-date. Nun habe ich aktualisiert auf die neueste version aus dem CVS-server (ich habe auch versucht, neueste Version version 7.2) und es "laden" - Symbole. Meine info sharedlibrary jetzt dies liest:

0x00e418b0  0x00e4be74  Yes         /home/raged/MyLIB/memtest/../lib/libMyLIB.so.0

Allerdings bin ich noch nicht in der Lage Schritt für Schritt durch alle Funktionen (in der "shared library") - wer noch irgendwelche Ideen?

EDIT3 ich habe auch versucht, Schritt durch die Verknüpfung gegen eine statische Bibliothek (libMyLIB.a) aber es immer noch nicht funktioniert. Mein OS ist CentOS 5.6; kennt jemand irgendwelche Probleme mit diesem system? Auch, nur eine weitere Bestätigung, dass meine Symbole nicht geladen werden kann (es kann einfach nicht Schritt für Schritt durch alle shared-lib-Funktion aus irgendeinem Grund)

(gdb) sharedlibrary MyLIB
Symbols already loaded for /home/raged/MyLIB/memtest/../lib/libMyLIB.so.0
  • Das passiert mir, wenn der code basiert auf einem anderen system aus, wo es läuft. Jede chance ist dass das problem?
  • NÖ. Ich baute alle binaries von der Quelle auf dieser bestimmten Maschine.
  • Weiß nicht, ob das hilft oder nicht, aber dieser alte bug-report gibt an, dass eine shared lib symbol problem wurde aufgrund einer falschen symbolischen link: bugs.gentoo.org/show_bug.cgi?id=273279 Vielleicht eine Ahnung?
  • Welche version von GDB verwenden Sie?
  • GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-32.el5_6.2) - Ich Suche in meiner symlinks jetzt. Ich bin einfach mit ln -s file.so.0.0.1 link.so.0 und ln -s file.so.0 link.so - wissen Sie, wenn es mehr gibt muss ich tun?
  • Ich weiß es nicht wirklich - schien einfach wie etwas, das vielleicht ein Anhaltspunkt für dich. Vielleicht wollen Sie auch versuchen, eine neuere version von GDB. Der patch beschrieben in diesem thread, sourceware.org/ml/gdb-patches/2010-01/msg00248.html, hat offensichtlich etwas zu tun mit diesem Bereich der symbol-handling. Ich denke, dass die 7.0 Version pre-dates, der patch. (Ich bin mir nicht sicher, ob es eine Lösung für dieses Problem, aber es ist in dem Bereich zumindest).
  • Brilliant - fest, dass der Fehler mit dem nicht laden der Symbole, allerdings bin ich noch nicht in der Lage, Schritt durch die Funktionen - ich habe meinen Beitrag aktualisiert mit den Informationen
  • Was meinst du mit "nicht in der Lage Schritt für Schritt durch alle Funktionen"? Können Sie Schritt für Schritt durch main()?
  • Ja, kann ich Schritt durch die main. Ich kann nicht Schritt sich in nichts von der gemeinsam genutzten Bibliothek obwohl.

InformationsquelleAutor RageD | 2011-06-17
Schreibe einen Kommentar