Autor |
Mensaje |
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Pila De Ejecución....
Es posible ver "en tiempo real" (sin deterner el programa con un punto de interrupción) la pila de ejecución de nuestro programa....
Si tenemos una subrutina de la siguiente manera:
Y primario() tiene dentro de el mismo:
La pila de ejecucion sería:
Programa principal -> ejecutar() -> primario() -> secundario() -> terciario()
¿es posible que desde secundario() se vaya al Programa principal sin ejecutar "terciario)"?
Osea "romper" la lista de la pila de ejecución.... ¿usando el maléfico GOTO?
Saludos
|
#1 Martes, 08 Marzo 2016, 13:05 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Pila De Ejecución....
Nunca lo he probado. Me salen granos en los dedos cuando escribo go-y-lo-que-sigue...
=================== No podemos regresar
|
#2 Martes, 08 Marzo 2016, 13:26 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pila De Ejecución....
Julio:
¿ Cómo puedes ver la pila de ejecución ?.
Si la aplicación no se para. Tendrías que usar un punto de interrupción o la instrucción Stop en alguna línea.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Martes, 08 Marzo 2016, 13:32; editado 1 vez
|
#3 Martes, 08 Marzo 2016, 13:32 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Pila De Ejecución....
La pila de ejecucion sería:
Programa principal -> ejecutar() -> primario() -> secundario() -> terciario()
Muy interesante, jsbsan, este asunto.
...pero, el orden de ejecución no es Programa principal -> ejecutar() -> primario() -> terciario() -> primario()-> secundario() ?
última edición por vuott el Martes, 08 Marzo 2016, 15:33; editado 1 vez
|
#4 Martes, 08 Marzo 2016, 13:55 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pila De Ejecución....
Julio:
¿ Algo como esto para empezar ?.
Y no quieres que dentro el procedimiento principal, después de llamada al segundo, no llegue al tercero.
Salida actual:
Citar:
Estoy en el primer procedimiento
Estoy en el tercer procedimiento
Estoy en el segundo procedimiento
Estoy en el tercer procedimiento <- Este no debe ejecutarse
Me es imposible ver la lista de la pila de ejecución. No tengo tanta rapidez visual.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#5 Martes, 08 Marzo 2016, 14:37 |
|
|
tincho
Analista Programador
Registrado: Noviembre 2014
Mensajes: 2565
Edad: 48 Ubicación:
|
Re: Pila De Ejecución....
Julio:
Seria muy interesante no solo saber la pila actual sino en que orden se ejecutan todas las instrucciones (para hacer un log de trazado de pila, por ejemplo), porque yo pensaba que todo se ejecutaba primero() segundo() tercero() pero una vez tuve que ver donde de producía realmente un error y me sorprendió ver que el orden de ejecución de las instrucciones no era el esperado.
Saludos.
|
#6 Martes, 08 Marzo 2016, 14:56 |
|
|
vuott
Analista Programador
Registrado: Agosto 2013
Mensajes: 2086
Edad: 60 Ubicación:
|
Re: Pila De Ejecución....
¿es posible .....
Osea "romper" la lista de la pila de ejecución.... ¿usando el maléfico GOTO?
Creo que tendrás usar un IF .
|
#7 Martes, 08 Marzo 2016, 15:45 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: Pila De Ejecución....
Citar:
Me es imposible ver la lista de la pila de ejecución. No tengo tanta rapidez visual.
F8,F8,F8, etc. etc...
=================== No podemos regresar
|
#8 Martes, 08 Marzo 2016, 18:06 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Pila De Ejecución....
Shordi:
Ah, me había olvidado del F8 y de Mayusculas-F8. Jeje.
Como decía en tiempo real. Eso es tiempo parao.
Ver la ejecución en depuración puede que en algunos momentos sea confusa.
Sobre todo entender por que lo hace. Lo digo por que a veces esperamos una
forma de funcionamiento y gambas deber hacer sus procesos, el sistema puede
que necesite trabajar de esa forma. Aunque no lleguemos a entenderlo del todo
y nos parezca raro.
No veo otra forma que usar una condicional, alguna bandera.
Habría que estudiar por que no se quiere llegar a ese procedimiento.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#9 Martes, 08 Marzo 2016, 19:30 |
|
|
jsbsan
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4175
Edad: 51 Ubicación: dos hermanas, sevilla
|
Re: Pila De Ejecución....
Vuott:
Citar: el orden de ejecución no es Programa principal -> ejecutar() -> primario() -> terciario() -> primario()-> secundario()
Si tienes razón.... pero algunas veces gambas hace cosas raras, como si estuvieran ejecutandose dos hilos a la vez.
Te explico:
Si pongo en la subrutina terciario() un "me.close()",...va a seguir ejecutando el procedimiento secundario() y si haces alguna operación el funciones o propiedades de ese formulario, falla.... algunas veces se produce un error, ya que "has cerrado" el formulario (me) ... y ya no existe el formulario (el objeto Me).
No se si me he explicado bien...
|
#10 Martes, 08 Marzo 2016, 20:22 |
|
|
|