it-swarm.com.de

Warum erhalte ich in GDB die Meldung "Einzelschrittschritt bis zum Beenden ... die keine Zeilennummerninformationen enthält"?

Ich habe mein C-Programm mit gcc 4.4.1 mit dem Flag -g kompiliert, aber wenn ich versuche, eine meiner Funktionen in gdb Version 7.0 zu durchlaufen, erhalte ich die Meldung: 

"Single stepping until exit from function _DictionaryTree_getNodeList, 
which has no line number information."

Kann mir jemand sagen, warum das so ist?

37
Steven Oxley

Nur raten, ist _DictionaryTree_getNodeList in einer anderen Datei, die nicht mit -g kompiliert wurde?

30

Ich hatte das gleiche Problem, aber in meinem Fall war das Hinzufügen von -g zum Compiler nicht genug, also verwendete ich -ggdb, wie von Manav vorgeschlagen.

9
Arild

In meinem Fall war das Problem der Versionsversatz zwischen gcc und gdb.

Nachdem ich hier aus der Suche gelandet war und keine dieser Antworten für meine Situation passte, stellte ich fest, dass ich (aufgrund von Aliasnamen/Symlinks/Makefile/Umgebungsvariablen) versehentlich eine neuere GCC (4.8.x) und eine ältere GDB (7.2) verwendete. Die Aktualisierung auf eine neuere Version von GDB (7.8) hat das Problem behoben. Aus irgendeinem Grund funktionierte die Verwendung eines neueren GCC und einer älteren GDB nicht.

6
hoc_age

Ich hatte auch diese Fehlermeldung, aber die Ursache meines Problems war anders. Wenn weiterhin Probleme auftreten, vergewissern Sie sich, dass Sie #include <stdio.h> in Ihrer Datei mit den entsprechenden Klammern um stdio.h haben (die Textnachricht würde nicht angezeigt, wenn ich stdio.h hätte).

1
user3916997

Ich hatte das gleiche Problem, obwohl ich bereits mit -g2 kompilierte. Das Ändern in -g3 hat den Trick ausgeführt.

0
richar8086

Ich hatte das gleiche Problem, als ich eine Datei mit der Option -g und ohne die Option -g kompilierte. Für eine Datei zeigte die gdb die Zeilennummer ohne Probleme an (auch wenn sie ohne die Option -g kompiliert wurde). . Und für die andere Datei musste ich -g Flag explizit erwähnen ...

Alle Ideen, ob die Quelldatei zur Laufzeit in .__ geladen werden konnte. GDB mit Querverweise wäre eine gute Lösung ... durch die Abbildung der Zeilen zu den Adressen: D.

0
ravi.zombie

Ich hatte dieses Problem, weil ich eine gemeinsam genutzte Bibliothek debuggen wollte, ohne LD_LIBRARY_PATH auf den korrekten Speicherort mit Debug-Endzuständen zu zeigen. 

sie können verwenden

export LD_LIBRARY_PATH=<location of the debug build of the .so file>:$LD_LIBRARY_PATH

Hoffentlich hilft das jemandem

0
Hans