Keine Quelldatei namens main.c. gdb Haltepunkteinstellung

Lesezeit: 2 Minuten

Benutzer-Avatar
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.

  1. Wie kann ich mein erstes Problem beheben?

  2. Nur neugierig, wie man das zweite Problem vermeidet, wenn es in Cygwin-Dateien und meinem Quellcode denselben Funktionsnamen gibt?

Benutzer-Avatar
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.

Benutzer-Avatar
Dyome

Entscheidend ist der gcc-Parameter -g beim Kompilieren.

Alles andere ist zweitrangig.

Siehe Breakpoints in GDB

Benutzer-Avatar
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.

    – Arlan

    3. Oktober 2013 um 6:23 Uhr

1298000cookie-checkKeine Quelldatei namens main.c. gdb Haltepunkteinstellung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy