Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Pila De Ejecución....
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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:

public sub ejecutar()
primario()
secundario()
end


Y primario() tiene dentro de el mismo:
public sub primario()
....
terciario()
...
end


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
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pila De Ejecución.... 
 
jsbsan escribió: [Ver mensaje]
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 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pila De Ejecución.... 
 
Julio:

¿ Algo como esto para empezar ?.

Public Sub Main()

  primero()
  segundo()
  tercero()

End

Public Sub primero()
  
  Print "Estoy en el primer procedimiento"
  tercero()
  
End

Public Sub segundo()
  
  Print "Estoy en el segundo procedimiento"
  
End

Public Sub tercero()
  
  Print "Estoy en el tercer procedimiento"
  
End
 


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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pila De Ejecución.... 
 
jsbsan escribió: [Ver mensaje]
¿es posible .....
Osea "romper" la lista de la pila de ejecución.... ¿usando el maléfico GOTO?


Creo que tendrás usar un IF .    
 



 
vuott - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Error En Ejecución Agamenon General 3 Martes, 27 Marzo 2012, 00:39 Ver último mensaje
razaAztk
No hay nuevos mensajes Eventos: Vaciar Pila [solucionado] jsbsan General 5 Miercoles, 15 Octobre 2014, 18:37 Ver último mensaje
jsbsan
No hay nuevos mensajes Se Me Perdio La Ventana Del Trazado De La ... tercoIDE General 2 Miercoles, 27 Julio 2016, 23:04 Ver último mensaje
tercoIDE
No hay nuevos mensajes Pila, Stack, Go Sub Shell General 6 Domingo, 25 Febrero 2018, 19:15 Ver último mensaje
Grandamakulo
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron