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.

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 Leonardo Azpurua [mvp vb]
04/05/2005 - 17:39 | Informe spam
"Pablo Fébolo" escribió en el mensaje
news:
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



Hola, Pablo:

La regla para la construccion If...Then..Else en la especificacion formal de
VB.NET indica:


IfStatement ::= BlockIfStatement | LineIfThenStatement
BlockIfStatement :: If Expression [ Then ] StatementTerminator
[ Block ]
[ ElseIfStatement+ ]
[ ElseStatement ]
End If StatementTerminator
ElseIfStatement :: ElseIf Expression [ Then ] StatementTerminator
[ Block ]
ElseStatement :: Else StatementTerminator
[ Block ]
LineIfThenStatement :: If Expression Then [Statements ] [ Else Statements ]
StatementTerminator

Es decir, la construccion If <Condicion> Then <Instrucciones> está definida
de manera inequivoca en la gramática de VB.NET.

El error persiste en la CTP de Noviembre para VS2005 (entra en el segundo x
+= 10, aunque no lo ejecuta). Sería conveniente reportarlo.


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



Es cierto. Pero es horroroso. Ya bastante verboso es VB para tener que
sacrificar una de las pocas comodidades sintácticas que tenemos.

Salud!
Respuesta Responder a este mensaje
#3 Pablo Fébolo
04/05/2005 - 18:28 | Informe spam
Leonardo, ¿como se lo reporta a MS?, todavía supongo que se esta a tiempo
para el vb 2005.

Saludos.
Respuesta Responder a este mensaje
#4 Leonardo Azpurua [mvp vb]
04/05/2005 - 18:53 | Informe spam
"Pablo Fébolo" escribió en el mensaje
news:
Leonardo, ¿como se lo reporta a MS?, todavía supongo que se esta a tiempo
para el vb 2005.

Saludos.



Hola, Pablo:

Lo acabo de reportar.

La dirección para el feedback de productos es:
http://lab.msdn.microsoft.com/produ...fault.aspx

Para reportar un error o hacer una sugerencia necesitas utilizar una cuenta
de Passport.

Salud!
Respuesta Responder a este mensaje
#5 Pablo Fébolo
05/05/2005 - 14:28 | Informe spam
Gracias, Leonardo por tu información.

Pablo.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida