Bug en la depuración!

04/05/2005 - 12:47 por Madieta | Informe spam
Me he encontrado con un bug en la ejecución paso por paso con VB.NET
2003 (no sé si sucede también algo parecido con otros lenguajes).

Para reproducirlo: Si ejecutáis el siguiente código en modo
depuración paso por paso por instrucciones o por procedimientos (F10 o
F11), veréis que el punto de ejecución se detiene en un punto en los
que no debería:

If True Then
If False Then Debug.WriteLine("por aqui no pasa")
If False Then Debug.WriteLine("por aqui si! aunque no escribe nada")
Else
Debug.WriteLine("aqui no llega")
End If

En la línea 3 el punto de ejecución pasa por la instrucción
debug.writeline como si la fuera a ejecutar!!! (aunque en realidad no
la ejecuta, por suerte, porque en ese caso sí que sería algo grave).

He estado alucinando un buen rato hasta que me he dado cuenta que era
sólo un problema en la visualización y no en la interpretación del
código. Alguien se había encontrado con esto? Hay algún parche o
update o algo que lo corrija?

Saludos!

Maria.
 

Leer las respuestas

#1 Pablo Fébolo
04/05/2005 - 15:06 | Informe spam
María, no se si considerarlo un bug, pero lo pruebo
y sucede lo que bien indicas, te propongo este cambio

Dim x As Integer = 10

Debug.WriteLine("Aqui llega")

If True Then
If False Then x += 10 'por aqui no pasa
If False Then x += 10 'por aqui si! aunque no ejecuta
Else
Debug.WriteLine("aqui no llega")
End If
Debug.WriteLine(x.ToString) 'Escribe 10

Fijate que es el mismo comportamiento.

Por otro lado la sintaxis es algo confusa,

If True Then
If False Then x += 10
If False Then x += 10
Else <-
Debug.WriteLine("aqui no llega")
End If

la duda podría plantearse como
¿El Else marcado a que if corresponde?


En definitiva usemos los IF
con sus correspondientes END IF

El siguiente codigo genera el comportamiento correcto
y no se generan dudas de interpretación

If True Then
If False Then
x += 10
End if
If False Then
x += 10
End if
Else
Debug.WriteLine("aqui no llega")
End If


Saludos.

Preguntas similares