FWIW la même logique de passer / passer à appliquer à Xcode / Swift
Honey
Réponses:
270
Considérez le code suivant avec votre pointeur d'instruction actuel (la ligne qui sera exécutée ensuite, indiquée par ->) à la f(x)ligne in g(), après avoir été appelée par la g(2)ligne in 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}}
Si vous étiez à l' étape dans à ce moment - là, vous passez à la println()ligne f(), entrer dans l'appel de fonction.
Si vous étiez à l' étape sur à ce moment - là, vous passez à la f(1)ligne g(), enjambant l'appel de fonction.
Une autre fonctionnalité utile des débogueurs est la sortie ou le retour d' étape . Dans ce cas, un retour d'étape vous fera essentiellement parcourir la fonction actuelle jusqu'à ce que vous remontiez d'un niveau. En d' autres termes, il va parcourir f(x)et f(1), puis revenir en arrière à la fonction d' appel pour aboutir à g(3)en main().
Eclipse (au moins Europa, qui est la seule que j'ai à portée de main en ce moment) utilise F5pour step into, F6pour step overet F7pour step return.
« A cette époque sur la fonction d' appel pour aboutir à g(3), dans main()» <- Vous présumez que vous avez à votre emplacement actuel à partir g(2)et une fois que vous êtes tout ce que vous fait revenir à sa ligne suivante g(3)?
Honey
1
@Honey, oui, il y avait une certaine ambiguïté (que l' appel soit en cours g(2)ou non g(3)), j'ai donc effacé cela dans le premier paragraphe. Merci pour l'information.
paxdiablo
144
Lors du débogage de lignes de code, voici les scénarios habituels:
( Pas à pas ) Une méthode est sur le point d'être invoquée, et vous voulez déboguer dans le code de cette méthode, donc l'étape suivante consiste à entrer dans cette méthode et à continuer le débogage étape par étape.
( Étape par dessus ) Une méthode est sur le point d'être invoquée, mais vous n'êtes pas intéressé par le débogage de cette invocation particulière, vous voulez donc que le débogueur exécute cette méthode complètement en une étape entière.
( Retour d'étape ) Vous avez terminé de déboguer cette méthode étape par étape, et vous voulez juste que le débogueur exécute la méthode entière jusqu'à ce qu'elle revienne en une seule étape.
( Reprendre ) Vous voulez que le débogueur reprenne l'exécution "normale" au lieu d'étape par étape
( Line Breakpoint ) Vous ne vous souciez pas de savoir comment cela est arrivé, mais si l'exécution atteint une ligne de code particulière, vous voulez que le débogueur suspende temporairement l'exécution là-bas afin que vous puissiez décider quoi faire.
Eclipse possède d'autres fonctionnalités avancées de débogage, mais ce sont les principes de base.
Vous ne pouvez pas parcourir les détails de la méthode en utilisant l'étape ci-dessus. Si vous voulez sauter la ligne actuelle, vous pouvez utiliser l'étape, puis il vous suffit d'appuyer F6une seule fois sur pour passer à la ligne suivante. Et si vous pensez qu'il y a quelque chose de mal dans la méthode, utilisez F5pour examiner les détails.
Donc, si je fais un pas et si la fonction contient une instruction d'impression, l'impression se produira-t-elle ou non?
username_4567
2
Pas à pas L'expression suivante sur la ligne actuellement sélectionnée à exécuter est invoquée et l'exécution s'arrête à la ligne exécutable suivante dans la méthode invoquée.
Pas à pas La ligne actuellement sélectionnée est exécutée et suspend sur la ligne exécutable suivante.
Réponses:
Considérez le code suivant avec votre pointeur d'instruction actuel (la ligne qui sera exécutée ensuite, indiquée par
->
) à laf(x)
ligne ing()
, après avoir été appelée par lag(2)
ligne inmain()
:Si vous étiez à l' étape dans à ce moment - là, vous passez à la
println()
lignef()
, entrer dans l'appel de fonction.Si vous étiez à l' étape sur à ce moment - là, vous passez à la
f(1)
ligneg()
, enjambant l'appel de fonction.Une autre fonctionnalité utile des débogueurs est la sortie ou le retour d' étape . Dans ce cas, un retour d'étape vous fera essentiellement parcourir la fonction actuelle jusqu'à ce que vous remontiez d'un niveau. En d' autres termes, il va parcourir
f(x)
etf(1)
, puis revenir en arrière à la fonction d' appel pour aboutir àg(3)
enmain()
.Eclipse (au moins Europa, qui est la seule que j'ai à portée de main en ce moment) utilise F5pour
step into
, F6pourstep over
et F7pourstep return
.la source
g(3)
, dansmain()
» <- Vous présumez que vous avez à votre emplacement actuel à partirg(2)
et une fois que vous êtes tout ce que vous fait revenir à sa ligne suivanteg(3)
?g(2)
ou nong(3)
), j'ai donc effacé cela dans le premier paragraphe. Merci pour l'information.Lors du débogage de lignes de code, voici les scénarios habituels:
Eclipse possède d'autres fonctionnalités avancées de débogage, mais ce sont les principes de base.
Voir également
la source
entrer dans va creuser dans les appels de méthode, l'
étape exécutera simplement la ligne et passera à la suivante
la source
Vous ne pouvez pas parcourir les détails de la méthode en utilisant l'étape ci-dessus. Si vous voulez sauter la ligne actuelle, vous pouvez utiliser l'étape, puis il vous suffit d'appuyer F6une seule fois sur pour passer à la ligne suivante. Et si vous pensez qu'il y a quelque chose de mal dans la méthode, utilisez F5pour examiner les détails.
la source
Pas à pas L'expression suivante sur la ligne actuellement sélectionnée à exécuter est invoquée et l'exécution s'arrête à la ligne exécutable suivante dans la méthode invoquée.
Pas à pas La ligne actuellement sélectionnée est exécutée et suspend sur la ligne exécutable suivante.
la source