Depuración. Saltos. - Versión para impresión +- Comunidad Gambas-es (https://gambas-es.org) +-- Foro: Gambas (https://gambas-es.org/forum-3.html) +--- Foro: General (https://gambas-es.org/forum-4.html) +--- Tema: Depuración. Saltos. (/thread-1643.html) |
Depuración. Saltos. - Shell - 22-03-2024 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() 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: .... 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 RE: Depuración. Saltos. - Shell - 22-03-2024 Otro ejemplo más. El salto entre puntos de interrupción no se comporta igual en un bucle While que un bucle For. Código: Private numeros As New Integer[] Coloco un punto de interrupción en el mismo For y otro en el Return avalores. Ejecuto con F5. Va a la linea donde se encuentra el For y luego vuelvo a pulsar F5, y esta vez, va directo a Return avalores. ( Había algo mal en el código, ahora ya funciona bien..usando el depurador ) Saludos |