FWIW die gleiche Logik von Schritt über / Schritt in gilt für Xcode / Swift
Honey
Antworten:
270
Betrachten Sie den folgenden Code mit Ihrem aktuellen Anweisungszeiger (der Zeile, die als nächstes ausgeführt wird, angezeigt durch ->) in der f(x)Zeile in g(), die von der g(2)Zeile in aufgerufen wurde main():
publicclass testprog {staticvoid f (int x){System.out.println ("num is "+(x+0));// <- STEP INTO}staticvoid g (int x){-> f(x);//
f(1);// <----------------------------------- STEP OVER}publicstaticvoid main (String args[]){
g(2);
g(3);// <----------------------------------- STEP OUT OF}}
Wenn Sie Schritt sind in an diesem Punkt, werden Sie auf die bewegen println()Linie in f(), in den Funktionsaufruf zu treten.
Wenn Sie zu Schritt sind über an diesem Punkt, werden Sie auf die bewegen f(1)Linie in g(), über den Funktionsaufruf zu treten.
Eine weitere nützliche Funktion von Debuggern ist das Step- out oder Step- Return. In diesem Fall führt Sie eine Schrittrückgabe im Grunde genommen durch die aktuelle Funktion, bis Sie eine Ebene höher gehen. Mit anderen Worten, es wird durchlaufen f(x)und f(1)dann zur aufrufenden Funktion zurückkehren, um bei g(3)in zu landen main().
Eclipse (zumindest Europa, das derzeit das einzige ist, das ich zur Hand habe) verwendet F5für step into, F6für step overund F7für step return.
"dann zurück zur aufrufenden Funktion, um bei zu landen g(3); in main()" <- Gehen Sie davon aus, dass Sie von Ihrem aktuellen Standort aus g(2)angekommen sind und wenn Sie fertig sind, kehren Sie zur nächsten Zeile zurück g(3)?
Honey
1
@Honey, ja, da gab es einige Unklarheiten (ob g(2)oder g(3)Anruf gerade aktiv ist), also habe ich das im ersten Absatz geklärt. Danke für die Warnung.
Paxdiablo
144
Hier sind die üblichen Szenarien beim Debuggen von Codezeilen:
( Schritt in ) Eine Methode wird gerade aufgerufen, und Sie möchten den Code dieser Methode debuggen. Der nächste Schritt besteht darin, in diese Methode einzusteigen und das Debuggen Schritt für Schritt fortzusetzen.
( Schritt über ) Eine Methode wird gerade aufgerufen, aber Sie sind nicht daran interessiert, diesen bestimmten Aufruf zu debuggen. Daher möchten Sie, dass der Debugger diese Methode vollständig als einen ganzen Schritt ausführt.
( Schritt zurück ) Sie haben das Debuggen dieser Methode Schritt für Schritt abgeschlossen und möchten nur, dass der Debugger die gesamte Methode ausführt, bis sie als ein ganzer Schritt zurückkehrt.
( Fortsetzen ) Sie möchten, dass der Debugger die "normale" Ausführung anstelle von Schritt für Schritt fortsetzt
( Zeilenumbruchpunkt ) Es ist Ihnen egal, wie es dort hingekommen ist, aber wenn die Ausführung eine bestimmte Codezeile erreicht, soll der Debugger die Ausführung dort vorübergehend anhalten, damit Sie entscheiden können, was zu tun ist.
Eclipse verfügt über weitere erweiterte Debugging-Funktionen, die jedoch die grundlegenden Grundlagen darstellen.
Sie können die Details der Methode nicht mit dem Step-Over durchgehen. Wenn Sie die aktuelle Zeile überspringen möchten, können Sie den Schritt über verwenden. Dann müssen Sie nur einmal die Taste drücken F6, um zur nächsten Zeile zu gelangen. Und wenn Sie der Meinung sind, dass etwas in der Methode nicht stimmt F5, überprüfen Sie die Details.
Wenn ich also übersteige und die Funktion eine Druckanweisung enthält, wird der Druck ausgeführt oder nicht?
Benutzername_4567
2
Schritt in Der nächste Ausdruck in der aktuell ausgewählten auszuführenden Zeile wird aufgerufen, und die Ausführung wird in der nächsten ausführbaren Zeile der aufgerufenen Methode angehalten.
Step Over Die aktuell ausgewählte Zeile wird ausgeführt und in der nächsten ausführbaren Zeile angehalten.
Antworten:
Betrachten Sie den folgenden Code mit Ihrem aktuellen Anweisungszeiger (der Zeile, die als nächstes ausgeführt wird, angezeigt durch
->
) in derf(x)
Zeile ing()
, die von derg(2)
Zeile in aufgerufen wurdemain()
:Wenn Sie Schritt sind in an diesem Punkt, werden Sie auf die bewegen
println()
Linie inf()
, in den Funktionsaufruf zu treten.Wenn Sie zu Schritt sind über an diesem Punkt, werden Sie auf die bewegen
f(1)
Linie ing()
, über den Funktionsaufruf zu treten.Eine weitere nützliche Funktion von Debuggern ist das Step- out oder Step- Return. In diesem Fall führt Sie eine Schrittrückgabe im Grunde genommen durch die aktuelle Funktion, bis Sie eine Ebene höher gehen. Mit anderen Worten, es wird durchlaufen
f(x)
undf(1)
dann zur aufrufenden Funktion zurückkehren, um beig(3)
in zu landenmain()
.Eclipse (zumindest Europa, das derzeit das einzige ist, das ich zur Hand habe) verwendet F5für
step into
, F6fürstep over
und F7fürstep return
.quelle
g(3)
; inmain()
" <- Gehen Sie davon aus, dass Sie von Ihrem aktuellen Standort ausg(2)
angekommen sind und wenn Sie fertig sind, kehren Sie zur nächsten Zeile zurückg(3)
?g(2)
oderg(3)
Anruf gerade aktiv ist), also habe ich das im ersten Absatz geklärt. Danke für die Warnung.Hier sind die üblichen Szenarien beim Debuggen von Codezeilen:
Eclipse verfügt über weitere erweiterte Debugging-Funktionen, die jedoch die grundlegenden Grundlagen darstellen.
Siehe auch
quelle
step into wird in Methodenaufrufe graben.
step over führt einfach die Zeile aus und geht zum nächsten über
quelle
Sie können die Details der Methode nicht mit dem Step-Over durchgehen. Wenn Sie die aktuelle Zeile überspringen möchten, können Sie den Schritt über verwenden. Dann müssen Sie nur einmal die Taste drücken F6, um zur nächsten Zeile zu gelangen. Und wenn Sie der Meinung sind, dass etwas in der Methode nicht stimmt F5, überprüfen Sie die Details.
quelle
Schritt in Der nächste Ausdruck in der aktuell ausgewählten auszuführenden Zeile wird aufgerufen, und die Ausführung wird in der nächsten ausführbaren Zeile der aufgerufenen Methode angehalten.
Step Over Die aktuell ausgewählte Zeile wird ausgeführt und in der nächsten ausführbaren Zeile angehalten.
quelle