Keine Quelldatei namens main.c. gdb Haltepunkteinstellung
Lesezeit: 2 Minuten
Arlan
Ich verwende gdb zum Debuggen des Quellcodes von C-Projekten. Ich kompiliere wie gezeigt:
./configure --enable-debug CFLAGS="-g -o0"
make --debug=a
Ich möchte, dass das Debuggen bei einer bestimmten Datei stoppt. Wenn ich also einen Haltepunkt mit setze
(gdb) break main.c:672
Es sagt:
No source file named main.c.
Auch wenn ich einen bestimmten Funktionsnamen (in der Datei main.c) an break übergebe. da steht: solche funktion nicht definiert.
Mein aktuelles Verzeichnis hat diese main.c-Datei. Ich verwende Cygwin unter Windows. Wenn ich einen Haltepunkt mit setze
(gdb) break main
Es hat einen Haltepunkt an einer Hauptfunktion der Cygwin-Datei gesetzt, nicht in meinem Quellcode.
Wie kann ich mein erstes Problem beheben?
Nur neugierig, wie man das zweite Problem vermeidet, wenn es in Cygwin-Dateien und meinem Quellcode denselben Funktionsnamen gibt?
Sohil Omer
Wenn Sie Ihre kompilieren .c Datei, stellen Sie sicher, dass Sie Folgendes verwenden:
gcc filename.c -g
gdb <binary name>
Suche nach Debugging-Symbolen laden fertig oder nicht?
Wenn nicht:
gdb) symbol-file <path-of-symbol-file>
Sie finden die Symboldatei im obj-Verzeichnis
Symbole aus .libs/slim lesen … fertig. Es zeigte diese Nachricht, ich denke, das Laden von Symbolen ist in Ordnung.
– Arlan
3. Oktober 2013 um 5:54 Uhr
Sie können den Schnappschuss des gesamten Problems posten, wie Sie kompilieren
– Sohil Omer
3. Oktober 2013 um 6:05 Uhr
Ich habe Kompilierinformationen hinzugefügt, bitte überprüfen
– Arlan
3. Oktober 2013 um 6:20 Uhr
Überprüfen Sie einfach, ob Sie eine Symboldatei der Prozess-ID hinzufügen müssen
– Sohil Omer
3. Oktober 2013 um 6:42 Uhr
Ich habe keine solche Datei gesehen. Was ist der erweiterte Name dieser Datei? Ich habe kein obj-Verzeichnis.
– Arlan
3. Oktober 2013 um 7:03 Uhr
Wenn Sie mit kompilieren -g und immer noch keinen Haltepunkt setzen können, versuchen Sie es mit dem Hinzufügen raise(SIGTRAP) in deiner main()führen Sie den Prozess in gdb aus und setzen Sie dann den gewünschten Haltepunkt erneut, nachdem er die erreicht hat SIGTRAP.
Dyome
Entscheidend ist der gcc-Parameter -g beim Kompilieren.
Alles andere ist zweitrangig.
Siehe Breakpoints in GDB
Kulwant Bhambra
Ich bin auch früher auf ein ähnliches Problem gestoßen. Ich habe gerade gelöscht .metadaten Ordner und importierte das jeweilige Projekt erneut und das funktioniert gut.
Wann immer Sie GDB verwenden müssen, geben Sie Folgendes in die Befehlszeile ein
gcc -g -o outputfile sourcefile.c
Geben Sie jetzt ein
gdb -tui outputfile
und geben Sie dann den Break-Befehl ein
gdb -tui Ausgabedatei . Ich führe dies aus und es öffnete einen Bereich oben im Terminal, es hat die Meldung “keine Quelle verfügbar”. Danach habe ich versucht, Break zu setzen, und dasselbe “Keine Quelldatei mit dem Namen main.c.” Botschaft.
– Arlan
3. Oktober 2013 um 6:23 Uhr
gdb -tui Ausgabedatei . Ich führe dies aus und es öffnete einen Bereich oben im Terminal, es hat die Meldung “keine Quelle verfügbar”. Danach habe ich versucht, Break zu setzen, und dasselbe “Keine Quelldatei mit dem Namen main.c.” Botschaft.