domingo, 21 de septiembre de 2008
Todos sabemos crear puntos de ruptura (breakpoints) desde Visual Studio, y lo indispensables que resultan para depurar nuestras aplicaciones. Y si la cosa está complicada, los puntos de ruptura condicionales pueden ayudarnos a lanzar el depurador justo cuando se cumpla la expresión que indiquemos.
Lo que no conocía era la posibilidad de establecerlos por código desde la propia aplicación que estamos depurando, que puede resultar útil en momentos en que nos sea incómodo crearlos desde el entorno de desarrollo. Es tan sencillo como incluir el siguiente fragmento en el punto donde deseemos que la ejecución de detenga y salte el entorno:
Como ya habréis adivinado, el
Si eliminamos esta protección, la llamada a
De todas formas lo mejor es usarlo con precaución, que eso de dejar el código con residuos de la depuración no parece muy elegante...
Publicado en: www.variablenotfound.com.
Lo que no conocía era la posibilidad de establecerlos por código desde la propia aplicación que estamos depurando, que puede resultar útil en momentos en que nos sea incómodo crearlos desde el entorno de desarrollo. Es tan sencillo como incluir el siguiente fragmento en el punto donde deseemos que la ejecución de detenga y salte el entorno:
// C#
if (System.Diagnostics.Debugger.IsAttached)
{
System.Diagnostics.Debugger.Break();
}
' VB.NET:
If System.Diagnostics.Debugger.IsAttached Then
System.Diagnostics.Debugger.Break()
End If
Como ya habréis adivinado, el
if
lo único que hace es asegurar que la aplicación se esté ejecutando enlazada a un depurador, o lo que es lo mismo, desde dentro del entorno de desarrollo; si se ejecuta fuera del IDE no ocurrirá nada.Si eliminamos esta protección, la llamada a
Debugger.Break()
desde fuera del entorno generará un cuadro de diálogo que dará la oportunidad al usuario de abrir el depurador:De todas formas lo mejor es usarlo con precaución, que eso de dejar el código con residuos de la depuración no parece muy elegante...
Publicado en: www.variablenotfound.com.
Publicado por José M. Aguilar a las 11:37 p. m.
Etiquetas: depuración, desarrollo, programación, trucos
3 Comentarios:
"puede resultar útil en momentos en que nos sea incómodo crearlos desde el entorno de desarrollo"
¿Como cuales? No le veo demasiada (ninguna más bien) utilidad...
Hola! Por ejemplo, se me ocurre en IDEs que no tengan tan a mano la introducción de los puntos de ruptura condicionales, o incluso que no dispongan de ellos (p.e., versiones antiguas de VS, o las Express).
No es que sea algo para usar todos los días, pero bueno, la posibilidad está ahí... ;-)
Es muy útil a la hora de depurar servicios windows, ya que estos no son "debugueales" directamente desde el visual studio, como ocurre en cualquier otro tipo de proyectos.
Por ejemplo bastaría con incluir un argumento "DEBUG" a la hora de iniciar el servicio para optar por el modo depuración.
Javi Cantos
Enviar un nuevo comentario