Shell   13-07-2023, 14:27
#1
Buenas!.

Me gustaría seguir la pista a una variable, pero no es una expresión.

Cuando entro en modo depuración hasta el punto de interrupción para conocer
el estado de la variable. Puedo decirle al editor que me agregué "el valor de una
expresión" pero no el de una variable.

Os muestro el código, tengo esto en el timer y ultimomilsegundo es la variable
que quiero ver como cambia a lo largo de la ejecución del programa.

Código:
Public Sub Timer1_Timer()
 
  ultimomilisegundo = Timer1.Delay   
 
  DrawingArea1.Refresh  
 
End

Entonces tengo el punto en de ruptura en la línea donde se encuentra la variable ultimomilisegundo.

Pero lo que hace en realidad es mostrarme la expresión que usa "esa" variable.
Y me agrega la variable que contiene una expresión donde la variable ultimomilisegundo
es encontrada. (Mostrándome el resultado de la expresión).

La variable que es el resultado de la expresión es esta:

Código:
...
 deltatime = ultimomilisegundo / 1000
...

A la izquierda del editor, me muestra esto:

[Imagen: XgHf6GC.png]

En objeto actual "si" puedo ver la variable. Lógicamente no es una expresión.

Si yo ejecutase ahora F5 y F5 y F5, estaría viendo los cambios que se produce en cada ejecución y vería el valor de "ultimomilisegundo" en el objeto actual.
Pero si la traza del programa salta a otra clase o modulo, le pierdo la pista a la variable "ultimomilisegundo". Cosa que no ocurre con la expresión "deltaTime".

Fijaros ahora la traza se encuentra en una clase distinta. La clase RobotGenerador

[Imagen: crRCyVM.png]


La variable ultimomilisegundo deja de verse, pero la expresión deltaTime es posible verla (a pesar de que el puntero de la traza se encuentre en otro lugar distinto).
¿ Es normal que no pueda ver el valor de la variable que quiero ver constantemente ?.

La variable ultimomilisegundo es global ( por decirlo de alguna manera) a todo el FMain. Solo a el.

Saludos

Subo algo más sencillo ( probablemente sea una tontería).

Se trata de saber como se actualiza la variable numero1

FMain
Código:
Private operacion1 As Multiplicar
Private numero1 As Integer
Private numero2 As Integer

'La idea del ejemplo es observar como cambia la variable numero1

Public Sub Main()

numero1 = 3
numero2 = 4

Randomize

RepiteMultiplicacion(3)
 
End

Public Sub RepiteMultiplicacion(nveces As Integer)
 
  operacion1 = New Multiplicar(numero1, numero2)
  For i As Integer = 0 To nveces - 1    
    Print operacion1.Multiplicacion()
    'Asignamos un número entre 1 y 10 a la variable global numero1
    numero1 = Rand(1, 10)
    'Se lo asignamos a la propiedad op1 del objeto operacion1
    operacion1.op1 = numero1
  Next
 
End

Y la clase Multiplicar:

Código:
Property op1 As Integer Use hop1
Property op2 As Integer Use hop2

Public Sub _new(operador1 As Integer, operador2 As Integer)
 
Me.op1 = operador1
Me.op2 = operador2  
 
End

Public Sub Multiplicacion() As Integer
 
  Return Me.op1 * Me.op2
 
End

Al final será una chorrada. Rolleyes

Saludos
Archivos adjuntos
.gz
TestDepuracion-0.0.1.tar.gz (Tamaño: 12.06 KB Descargas: 3)
Última modificación: 13-07-2023, 15:01 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shordi   13-07-2023, 19:17
#2
No entiendo el problema. A mí, hasta donde he entendido el problema, me funciona perfectamente.
[Imagen: KwxYEkP.png]

¿Qué es lo que no te funciona?

Saludos

No podemos regresar
Shell   13-07-2023, 19:54
#3
(13-07-2023, 19:17)Shordi escribió: ¿Qué es lo que no te funciona?

El programa no tiene problema de ejecución. Wink

Tan solo fue un ejemplo. No es importante. Imagina que lo haces con un proyecto que es tuyo.

Lo que se trata es entrar en modo depuración y nunca perder de vista la variable de tu programa ( la que sea que te interesa ver ) y ver como va cambiando a
lo largo de la ejecución de la aplicación en cada momento. Aunque  en ese momento se encuentre el puntero en otra clase, en otro modulo, formulario, etc.
Vamos que aparezca y la veas siempre. ( Que se tenga a la vista en algún lugar del editor ).
A ver si es que es cosa de como trabaja el editor. Como cada uno es distinto. Huh

Ojo, variable, no expresión. ¿ Puedes ver siempre el valor que contiene en modo depuración ?. ( Esa es la cuestión )

Saludos
Última modificación: 13-07-2023, 19:56 por Shell.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
Shell   13-07-2023, 21:10
#4
El cambio de Gambas2 a Gambas3 tuvo sus diferencias. A mejor espero. Smile
En Gambas2  la información de la depuración se mostraba en la consola inferior.

Entonces existían una serie de pestañas en esa terminal y una de ella era observar.
Como ha pasado ya tantos años pues no recuerdo como era aquello y si daba la posibilidad que busco.
( Observar los cambios de una variable concreta ).

En Gambas 3 según vamos ejecutando paso a paso las instrucciones, pasamos
a otro lugar, donde "la variable no existe" y no se muestra, debería ser pública
para eso, pero como es normal, no tiene por que serlo.

Cuando volvamos  durante todo ese trazado o (backtrace) al lugar donde la variable exista,
se mostrará.  Pero no solo se mostrará esta, se mostrará más variable y a lo mejor
te interesa centrarte en solo esa , o que esta se encuentre en una parte más localizable.

Por decirlo de alguna forma. ¿ Y si tiene 100 variables y ves una lista enorme de variables ?.
¿ Cómo localizas de un vistazo la que te interesa ?.

A eso voy en parte.

"El conocimiento es la mejor inversión que se puede hacer" - Abraham Lincoln
  
Usuarios navegando en este tema: 1 invitado(s)
Powered By MyBB, © 2002-2024 MyBB Group.
Made with by Curves UI.