Keine debug-Symbole in der gdb auch beim kompilieren mit "- g " flag
Ich versuche um mein Programm zu kompilieren mit debug-Symbole für die Verwendung in gdb. Ich habe die -g-flag zu meinem makefile aber ich bekomme immer noch "Lesen Symbole aus ...(no debugging symbols found)" wenn ich laden Sie das Programm in gdb. Was ist falsch????
Hier ist eine abgespeckte Beispiel von meinem makefile, das sollte die relevanten bits:
CPP = g++
CFLAGS = -c -g -Wall
$(BIN): $(OBJ)
$(CPP) $(LDFLAGS) $(OBJ) -o $(BIN) $(LIBS)
<test.o>: <test.cpp>
$(CPP) $(CFLAGS) <test.cpp> -o <test.o>
Wenn Sie möchten, um zu sehen, die ganze Sache, die Sie gehen können, stattdessen hier, obwohl ich nicht denke es notwendig:
Sonstige Hinweise.. ich bin kompilieren mit MinGW unter Windows, und ich habe SFML und OpenGL als Abhängigkeiten.
Und Nein, das -s-flag ist nirgends zu finden in meinem makefile.
- Können Sie bestätigen, mit
make -n
Sie sind ja auch immer die-g
Fähnchen auf der compile-Zeile? - F:\rowdump\rom\ROMV>make-n-g++ -Wall src/obj/Kern.o src/obj/Bild.o src/obj/gnd.o src/obj/gat.o src/obj/Welt.o src/obj/rsw.o src/obj/Kamera.o src/obj/rsm.o src/obj/main.o -o romv -Wl,--enable-auto-import,-subsystem,windows -lsfml-main -lsfml-Grafik -lsfml-Fenster -lsfml-system -lopengl32 -lglu32 Es nicht gibt! Komisch.. Und meine -ansi und -pendantic flags sind auch Weg. Edit: Sorry für die wall of text. Wusste nicht, es war gonna so.
- die Ausgabe, Kobie eingefügt ist für Standard-Ziel, das für die Verknüpfung, und es gibt keine -g-flag gibt. Ich habe gerade bestätigt, dass auf Ubuntu, dass das flag ist nicht erforderlich, beim linken nur zur compile-Zeit. Ich denke, Sie sollten versuchen, "make-n-test.o", um zu sehen, welcher Befehl verwendet, um zu kompilieren.
- Als seitliche Anmerkung, die durch die Konvention Sie verwenden
CXXFLAGS
für C++ undCFLAGS
für plain C.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ahh. Tut mir sehr Leid. Es stellt sich heraus, die "sauber:" Teil meiner makefile kaputt ist. Also wenn ich make clean ist nichts passiert. Löschen der .o Dateien manuell behoben das problem. Die flags funktionieren nun perfekt. Dank an alle, die gepostet sowieso! Diese können nun gelöscht werden.
make -n
ist und zeigt nur die Verlinkung Teil, nicht das kompilieren, Teil. Stellen Sie sicher, Sie sind auf der Suchemake -n test.o
nur.Ich hatte das gleiche Problem bei der Verwendung von makefile habe ich geerbt, auf einige alte F77-code. Ich habe versucht, alle flags Leute empfehlen (-g -ggdb ...usw.)
die Lösung ausgeführt wurde sauber machen
Wenn Sie das nicht haben oder wissen, was es bedeutet, im Grunde löschen Sie alle kompilierten (.o) - Dateien.
makefile wusste nicht kompilieren, da nur die flags geändert wurden, so dass ich tatsächlich gar nicht compilieren mit -g oder -ggdb, wenn ich dachte, es war. Hoffe, das jemand hilft!
versuchen zu ersetzen
mit
(Bearbeiten)
Hinweis: die option-c wird nicht funktionieren mit ausführbaren
-c
. Auch scheint es (von einem schnellen test auf g++ 4.4.1 auf GNU/Linux), dass Sie nicht brauchen-g
als Verlinkung.Ich bin mir nicht sicher, aber ich glaube, Sie brauchen,- g selbst, während die Verknüpfung.
Habe ich nicht viel Erfahrung mit Mingw, aber versuchen zu ersetzen -g -ggdb. Dies kann Ihr problem lösen. Laut gcc-Manual Seite
-g
sagt, "GDB kann die Arbeit mit dieser debugging-Informationen."Ich glaube, Sie brauchen
-g
beim verknüpfen des Objekts in einen binären code.