2010-01-31 4 views

Antwort

25

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

+1

Ja, ich habe es herausgefunden, bevor ich Ihre Antwort gelesen habe. Gute Vermutung;) –

+8

Wenn Sie mehrere Dateien kompilieren, ist es besser, ein Makefile zu verwenden und -gdb in den gcc Option Flags hinzuzufügen. –

+0

@Manav MN Ja, das ist, was ich habe, aber ich habe zwei verschiedene Befehle - einen zum Kompilieren und einen zum Verknüpfen und ich habe vergessen, das Flag zum Kompilieren hinzuzufügen (das ist eigentlich das einzige, für das ich es brauchte, ich vermuten). –

9

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

0

Ich hatte das gleiche Problem, wenn ich eine Datei kompiliert mit -g-Option und ohne -g-Option. Für einen der Datei zeigte die GDB Zeilennummer ohne Probleme .. (auch wenn es ohne Option -g kompiliert wurde) und für die andere Datei, ich hatte ausdrücklich Option -g zu erwähnen ...

Alle Ideen, ob die Quelldatei zur Laufzeit in GDB mit Querverweis geladen werden könnte, wäre eine gute Lösung ... durch Zuordnung der Zeilen zu den Adressen: D.

1

Ich hatte diese Fehlermeldung auch, aber die Quelle meines Problems war anders. Wenn jemand immer noch Probleme hat, stellen Sie sicher, dass Sie #include <stdio.h> in Ihrer Datei haben, mit den entsprechenden Klammern um stdio.h (die Textnachricht würde nicht angezeigt, wenn ich es um stdio.h hatte).

4

In meinem Fall war das Problem Version skew zwischen gcc und gdb.

Nach der Landung hier von der Suche und keine dieser Antworten passen meine Situation, ich fand heraus, dass (wegen Aliase/Symlinks/Makefile/Umgebungsvariablen) ich versehentlich einen neueren GCC (4.8.x) und eine ältere GDB verwendet (7.2). Die Umstellung auf eine neuere Version von GDB (7.8) behob das Problem. Aus irgendeinem Grund funktionierte die Verwendung eines neueren GCC und älteren GDB nicht.

+1

... aber (nur) jetzt sehe ich, dass frühere Antworten auf andere fast identische Fragen diese Antwort haben - z., [this] (http://stackoverflow.com/a/20493816/3562032) und [dies] (http://stackoverflow.com/a/18408197/3562032). Letzteres enthält Informationen zu * why * (DWARF-Inkompatibilität). Upvotes überall herum! –

0

Ich hatte dieses Problem, weil ich eine gemeinsam genutzte Bibliothek debuggte, ohne LD_LIBRARY_PATH zu zeigen, um den Speicherort mit Debug-Endzuständen zu korrigieren.

können Sie

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

verwenden Hoffentlich

0

ich das gleiche Problem hatte jemand hilfreich trotz ich bereits mit -g2 Kompilieren wurde. Ändern Sie es zu -g3 tat den Trick.

Verwandte Themen