help
Während ich in der GDB war, habe ich getippt , aber nichts über Einsteigen, Übersteigen und Aussteigen gefunden. Ich habe einen Haltepunkt in ein Assembly-Programm in _start
( break _start
) eingefügt . Danach habe ich getippt next
und das Debuggen beendet. Ich denke, es war, weil es fertig war _start
und nicht so einging, wie ich wollte.
Kann jemand helfen?
debugging
programming
gdb
Pichi Wuana
quelle
quelle
Antworten:
help running
liefert einige Hinweise:Es gibt
step
undnext
Anweisungen (und auchnexti
undstepi
).So können wir sehen , dass
step
Schritte in Subroutinen, sondernnext
wird Schritt über Subroutinen.Das
step
undstepi
(und dasnext
undnexti
) unterscheiden sich durch "Zeilen" - oder "Anweisungs" -Inkremente.Verwandte ist
finish
:Weitere nützliche Informationen finden Sie unter https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
quelle
for(i=0;i<10;i++) { printf("%d\n",i); }
ist eine Quellzeile, aber mehrere Anweisungen.finish
Befehl vervollständigt den aktuellen Stapelrahmen, der normalerweise die aktuelle Unterroutine vervollständigt und zum Aufrufer zurückkehrt.Ich bin hergekommen, weil ich die gleiche Frage hatte. Schließlich stellte ich fest, dass ich für meinen Zweck jederzeit so etwas wie ein "Step-out" einer Schleife verwenden kann, indem ich nach der Schleife einen anderen Haltepunkt setze und dann das Programm
continue
die Schleife beenden und danach in den Haltepunkt laufen lasse . Es tut uns leid, wenn dies für die meisten Menschen offensichtlich ist, aber es ist wahrscheinlich hilfreich für jemanden, der nach einer Antwort auf diese Frage sucht.quelle