Respuestas:
Considere el siguiente código con su puntero de instrucción actual (la línea que se ejecutará a continuación, indicada por ->) en la f(x)línea de entrada g(), habiendo sido llamada por la g(2)línea de entrada 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
}
}
Si tuviera que intervenir en ese punto, pasará a la println()línea y entrará f()en la llamada a la función.
Si tuviera que dar un paso adelante en ese punto, pasará a la f(1)línea g(), pasando por encima de la llamada a la función.
Otra característica útil de los depuradores es el paso fuera o el paso atrás . En ese caso, un retorno de paso básicamente lo ejecutará a través de la función actual hasta que vuelva a subir un nivel. En otras palabras, avanzará f(x)y f(1)luego regresará a la función de llamada para terminar g(3)en main().
Eclipse (al menos Europa, que es el único que tengo a mano en este momento) usa F5para step into, F6para step overy F7para step return.
g(3), en main()" <- ¿Está asumiendo que usted tiene a su ubicación actual a partir g(2)y una vez que está todo hecho que regrese a su siguiente línea g(3)?
g(2)sea que la g(3)llamada esté actualmente activa), así que lo eliminé en el primer párrafo. Gracias por el aviso.
Al depurar líneas de código, estos son los escenarios habituales:
Eclipse tiene otras características avanzadas de depuración, pero estos son los fundamentos básicos.
step into cavará en llamadas a métodos
step over solo ejecutará la línea e irá a la siguiente
No puede pasar por los detalles del método utilizando el paso. Si desea omitir la línea actual, puede usar el paso adelante, solo necesita presionar el F6botón una sola vez para pasar a la línea siguiente. Y si cree que hay algún error en el método, úselo F5para examinar los detalles.
Paso a paso Se invoca la siguiente expresión en la línea actualmente seleccionada que se ejecutará, y la ejecución se suspende en la siguiente línea ejecutable en el método que se invoca.
Paso a paso La línea seleccionada actualmente se ejecuta y se suspende en la siguiente línea ejecutable.