Ich debugge ein Programm mit gdb. Zuerst Ich load meine ausführbare Datei, dann ich continue um das Programm auszuführen. Manchmal möchte ich die Ausführung meines Programms unterbrechen, also tue ich es Ctrl + C.
Mein Problem ist, dass dies schließt beide mein Programm und gdb. Wie kann ich mein Programm beenden, ohne gdb zu beenden?
Das soll nicht passieren; Strg-C soll nur unterbrechen (nicht beenden) Ihr Programm, und es soll definitiv nicht gdb beenden. Welche Umgebung verwendest du?
– Trojaner
12. März 2012 um 14:37 Uhr
Ich verwende Cygwin. Seltsam.
– Zufallsblau
12. März 2012 um 14:39 Uhr
Haben Sie versucht, zu verwenden kill von innen gdb?
Ja. Aber danach continue Ich laufe nicht zur gdb-Eingabeaufforderung, also passiert nichts.
– Zufallsblau
12. März 2012 um 14:41 Uhr
Wie @trojanfoe sagte, Strg-C sollte Ihr Programm einfach unterbrechen, damit Sie wieder die gdb-Konsole haben. Versuchen Sie jedoch zu verwenden start um Ihr Programm zu starten. Die Ausführung sollte am Anfang von stoppen main Funktion. Dann benutze kill um Ihr Programm zu beenden.
– Manlio
12. März 2012 um 14:46 Uhr
Wenn ich es versuche start Ich erhalte „Keine Symboltabelle geladen. Verwenden Sie den Befehl „Datei“.
– Zufallsblau
12. März 2012 um 14:53 Uhr
Verwenden Sie Strg-C, um die Anwendung zu unterbrechen. Führen Sie dann “signal SIGINT” von der GDB-Eingabeaufforderung aus, wodurch dieses Signal an Ihre Anwendung gesendet wird, wodurch sie die gleichen Dinge tut, die sie normalerweise tun würde, wenn Sie ctrl-c von der Befehlszeile aus ausführen.
Trojaner
Sieht aus wie unter Windows, müssen Sie verwenden Ctrl-Break nicht Ctrl-C. Sieh dir das an Seite.
Auszug:
MS-Windows-Programme, die SetConsoleMode aufrufen, um die Sonderbedeutung der Tastenkombination `Strg-C’ abzuschalten, können nicht durch Eingabe von Cc unterbrochen werden. Aus diesem Grund unterstützt gdb unter MS-Windows C- als alternative Interrupt-Tastenfolge, die verwendet werden kann, um das Debuggee zu unterbrechen, selbst wenn es Cc ignoriert.
Vielen Dank. Dadurch wird GDB immer noch beendet. Wenn es jetzt beendet wird, schreibt es “Quit (core dumped)”
– Zufallsblau
12. März 2012 um 14:54 Uhr
@Randomblue Oh blimey – scheint nicht sehr glücklich zu sein, oder? Ich weiß nicht, was ich vorschlagen soll, außer vielleicht zu Microsoft-Compilern zu wechseln (sie sind mit dem Windows SDK kostenlos).
– Trojaner
12. März 2012 um 14:55 Uhr
@Randomblue führst du das Zeug aus cmd oder sh Konsole? Ist das debuggte Programm Cygwin oder Win32 nativ? (fürs Protokoll: ist gdb Cygwin oder Win32? 😉 )
– ivan_pozdeev
6. August 2015 um 22:18 Uhr
Führen Sie zuerst das Programm aus (nicht innerhalb von gdb) und suchen Sie dann seine PID.
Führen Sie in einer anderen Shell aus gdb --pid=<your program's pid>. Dies hängt gdb an ein laufendes Programm an. Es stoppt die Ausführung des Programms, also issue c weitermachen.
Beenden Sie jetzt Ihr Programm, Ihre gdb-Sitzung bleibt dort.
Wie Manlio sagte, was Sie in diesem Fall wollen, ist killdas Sie mit einer Meldung auffordert, die lautet:
Kill the program being debugged? (y or n)
Wenn Sie tippen help running Sie werden alle wichtigen Befehle sehen, die Sie kennen müssen, um allgemeine Dinge zu tun, wie z. B. das Stoppen der Ausführung eines aktuellen Programms. Dies sollten alle Befehle für das Programm sein, das Sie ausführen, und nicht für gdb.
13833300cookie-checkgdb: Programm beenden ohne gdb zu beendenyes
Das soll nicht passieren; Strg-C soll nur unterbrechen (nicht beenden) Ihr Programm, und es soll definitiv nicht gdb beenden. Welche Umgebung verwendest du?
– Trojaner
12. März 2012 um 14:37 Uhr
Ich verwende Cygwin. Seltsam.
– Zufallsblau
12. März 2012 um 14:39 Uhr