Risposte:
Considerare il seguente codice con il puntatore dell'istruzione corrente (la riga che verrà eseguita successivamente, indicata da ->) nella f(x)riga in g(), essendo stata chiamata dalla g(2)riga in main():
public class testprog {
static void f (int x) {
System.out.println ("num is " + (x+0)); // <- STEP INTO
}
static void g (int x) {
-> f(x); //
f(1); // <----------------------------------- STEP OVER
}
public static void main (String args[]) {
g(2);
g(3); // <----------------------------------- STEP OUT OF
}
}
Se si dovesse fare un passo in a quel punto, si sposta alla println()riga f(), entrando nella chiamata di funzione.
Se dovessi passare da quel punto in poi, ti sposterai sulla f(1)linea g(), scavalcando la chiamata di funzione.
Un'altra caratteristica utile di debugger è il passo su o la fase di ritorno. In tal caso, un ritorno a capo ti farà passare attraverso la funzione corrente fino a quando non salirai di un livello. In altre parole, passerà attraverso f(x)e f(1), quindi, tornerà alla funzione di chiamata per finire in g(3)inmain() .
Eclipse (almeno Europa, che è l'unica che ho a portata di mano al momento) usa F5per step into, F6per step overe F7per step return.
g(3); in main()" <- Stai assumendo di essere arrivato alla posizione corrente da g(2)e una volta che hai finito di tornare alla riga successiva g(3)?
g(2)o la g(3)chiamata è attualmente attiva) quindi l'ho chiarito nel primo paragrafo. Grazie per il testa a testa.
Durante il debug di righe di codice, ecco i soliti scenari:
Eclipse ha altre funzionalità di debug avanzate, ma questi sono i fondamenti di base.
passo a scavare in chiamate di metodo
passo a passo eseguirà solo la linea e passerà al successivo
Non è possibile esaminare i dettagli del metodo utilizzando il passaggio sopra. Se si desidera saltare la riga corrente, è possibile utilizzare il passaggio, quindi è sufficiente premere F6una sola volta per passare alla riga successiva. E se pensi che ci sia qualcosa di sbagliato nel metodo, usa F5per esaminare i dettagli.
Step Into Viene invocata l'espressione successiva sulla riga attualmente selezionata da eseguire e l'esecuzione viene sospesa sulla riga eseguibile successiva nel metodo richiamato.
Passaggio La riga attualmente selezionata viene eseguita e sospende sulla riga eseguibile successiva.