Buenas!.
Tengo dos breakpoints ( o puntos de ruptura ) en un ejemplo:
Si pulso la tecla F5, el flujo de ejecución del programa se para en la línea 17.
Si vuelvo a pulsar la tecla F5, se vuelve a ejecutar un ciclo del bucle While
y vuelve a la línea 17, pero no pasa al siguiente punto de ruptura en la línea 22.
¿ Es posible saltar de un punto de interrupción al siguiente punto de interrupción ?.
Tampoco podemos decirle al editor usando el menú contextual, ejecutar hasta la línea 22, ya que
se para antes en la línea 17.
F5 parece que ejecuta hasta el breakpoint. Si, sabemos que es un bucle que esto se ejecuta
varias veces, pero la ejecución podría termina en el siguiente punto de interrupción.
En depuración tenemos:
F8 - Paso a paso.
MAY + F8 - Paso entre procesos. ( Y esto tiene truco, ya que puede cambiar el comportamiento del salto si antes has usado F8 ).
Dependiendo a veces, F8 y MAY + F8 se puede comportar igual en determinados momentos
F5 - Ejecutar
Poco más. Quitando pausa y parada.
Otro ejemplo. Tenemos esto:
Código:
Public Sub Form_Open()
Print "Instrucción 1 en Form Open"
Print "Instrucción 2 en Form Open"
Procedimiento1()
End
Public Sub Procedimiento1()
Print "Instrucción 1 en Procedimiento1"
Print "Instrucción 2 en Procedimiento1"
Procedimiento2()
End
Public Sub Procedimiento2()
Print "Instrucción 1 en Procedimiento2"
Print "Instrucción 2 en Procedimiento2"
Procedimiento3()
End
Public Sub Procedimiento3()
Print "Instrucción 1 en Procedimiento3"
Print "Instrucción 2 en Procedimiento3"
Terminar()
End
Public Sub Terminar()
Print "Hemos terminado!"
End
F8 - Va paso a paso por cada uno de los saltos, hasta llegar al procedimiento Terminar
MAY + F8: Al principio se comporta como F8. Solo hasta que encuentra el primer salto entre los procedimientos.
Ejecuta el primer procedimiento y cuando llega al procedimiento 1, ejecuta todo, sin pararse
( Creía que iría de un procedimiento a otro ). Por otra parte en esos procedimientos hay saltos.
Si comentamos uno de los saltos a los procedimientos, ejemplo en el Procedimiento 2.
Código:
....
Public Sub Procedimiento2()
Print "Instrucción 1 en Procedimiento2"
Print "Instrucción 2 en Procedimiento2"
'Procedimiento3()
End
....
MAY + F8
Se comporta al principio como F8 y luego finaliza en la última línea del Procedimiento 2.
Ahora bien. Pongamos un punto de ruptura en cada salto a los procedimiento.
Ejecutamos. Primera parada en la llamada al procedimiento1. Ahora usamos MAY + F8.
Va saltando entre puntos de interrupción y hace algo curioso al final.
Cuando llega a llamar al procedimiento Terminar, este se ejecuta, se ve la salida en la consola.
(Pero no para en este, el cursor de ejecución)
"Y" su siguiente parada "es" el final de la última llamada. (End del Procedimento 3), va "reculando"
a cada End de los procedimientos anteriores y se finaliza. Lo que seria, vaciando la pila de llamadas.
La verdad es que esperaba que saltase entre puntos de interrupción en el ejemplo del bucle con la tecla F5.
¿ Es el comportamiento habitual de la pila de llamadas ?. ( ¿ En cualquier aplicación ?)
Recular hasta el primero procedimiento que se realizó una llamada.
Lo que en parte pregunto esto es por este motivo:
Si creamos un punto de ruptura en un bucle que tiene que realizar un número de pasos que pueden ser muchos.
Podemos estar pendiente de que acabe para ver algo, o tengamos que pararlo nosotros mismos. ( Hartos de esperar ).
Saludos