FWIW, la misma lógica de paso sobre / paso para aplicar a Xcode / Swift
Honey
Respuestas:
270
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():
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 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.
"luego de vuelta a la función que llama a terminar en 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)?
Miel
1
@Honey, sí, había cierta ambigüedad allí (ya g(2)sea que la g(3)llamada esté actualmente activa), así que lo eliminé en el primer párrafo. Gracias por el aviso.
paxdiablo
144
Al depurar líneas de código, estos son los escenarios habituales:
( Paso a paso ) Se está a punto de invocar un método y desea depurar el código de ese método, por lo que el siguiente paso es entrar en ese método y continuar la depuración paso a paso.
( Paso a paso ) Se va a invocar un método, pero no está interesado en depurar esta invocación en particular, por lo que desea que el depurador ejecute ese método completamente como un paso completo.
( Paso de retorno ) Ya ha terminado de depurar este método paso a paso, y solo desea que el depurador ejecute todo el método hasta que regrese como un paso completo.
( Reanudar ) Desea que el depurador reanude la ejecución "normal" en lugar de paso a paso
( Punto de interrupción de línea ) No le importa cómo llegó allí, pero si la ejecución alcanza una línea de código particular, desea que el depurador pause temporalmente la ejecución allí para que pueda decidir qué hacer.
Eclipse tiene otras características avanzadas de depuración, pero estos son los fundamentos básicos.
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.
Entonces, si paso y si la función contiene alguna declaración de impresión, ¿ocurrirá la impresión o no?
username_4567
2
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.
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 laf(x)
línea de entradag()
, habiendo sido llamada por lag(2)
línea de entradamain()
: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íneag()
, 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)
yf(1)
luego regresará a la función de llamada para terminarg(3)
enmain()
.Eclipse (al menos Europa, que es el único que tengo a mano en este momento) usa F5para
step into
, F6parastep over
y F7parastep return
.fuente
g(3)
, enmain()
" <- ¿Está asumiendo que usted tiene a su ubicación actual a partirg(2)
y una vez que está todo hecho que regrese a su siguiente líneag(3)
?g(2)
sea que lag(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.
Ver también
fuente
step into cavará en llamadas a métodos
step over solo ejecutará la línea e irá a la siguiente
fuente
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.
fuente
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.
fuente