Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=3280fdd8-5c63-455b-abeb-6b43021fa28e

Depuración con Visual Studio II: Puntos de interrupción con traza o Tracepoints

Hace unos días os contaba cómo crear puntos de interrupción condicionales, más "inteligentes" que los normales y que nos daban mucho más juego a la hora de depurar una aplicación .NET en Visual Studio.

En esta ocasión voy a hablar de los Tracepoints  (en contraste con  los breakpoints). Un punto de interrupción con traza o tracepoint está pensado para mostrar información adicional sobre el punto de interrupción de modo que podamos trazar lo que ocurre al pasar por él, sin necesidad siquiera de detenerse en el mismo (para lo cual usaríamos las opciones vistas en el artículo anterior).

Se activan usando la otra opción "Actions (o "Acciones") que teníamos en los ajustes de un breakpoint:

VS-Puntos-Interrupcion-Opciones-02

Al marcarla se nos muestran las posibles acciones a realizar cuando la ejecución de código pase por este punto, que básicamente son dos: mostrar un mensaje en la ventana de salida y continuar o no la ejecución:

VS-Puntos-Interrupcion-Opciones-07

Dentro del cuadro de texto podemos incluir cualquier variable o expresión de nuestro código que esté dentro del ámbito de la línea actual, por lo que podremos mostrar en la ventana de output cualquier información que necesitemos. Solo es necesario escribirlo entre llaves: {}.

Además existen una serie de pseudo-variables especiales que nos ofrece el entorno y que se ven en el tooltip de la figura anterior:

Pseudo Variable: Descripción:
$ADDRESS Instrucción actual
$CALLER Función que llama a la actual
$CALLSTACK Imprime la pila de llamadas completa
$FUNCTION El nombre de la función actual
$PID Identificador del proceso
$PNAME Nombre del proceso
$TID Identificador del hilo
$TNAME Nombre del hilo

Al intentar escribirlas Visual Studio nos ofrece ayuda contextual:

VS-Puntos-Interrupcion-Opciones-08

De este modo basta con escribir cualquiera de estas variables para mostrar la información correspondiente.

Por ejemplo, si escribimos esto en un punto de interrupción:

VS-Puntos-Interrupcion-Opciones-09

obtendremos la siguiente salida cada vez que pase por el mismo:

VS-Puntos-Interrupcion-Opciones-11

y podremos saber más información sobre qué está pasando justo en ese punto del programa, pero sin necesidad de tener que pararnos.

Por defecto está marcada la opción de continuar la ejecución, pero si también queremos que se pare basta con quitar la opción y se comportará como un punto de interrupción normal, deteniendo la ejecución.

Los puntos de interrupción con acciones se representan mediante un rombo granate en lugar de un círculo:

VS-Puntos-Interrupcion-Opciones-10

Y así se distinguen mucho mejor.

Dos advertencias para finalizar:

  • Si pulsamos sin querer en un tracepoint (el rombo granate) y lo quitamos por error, al volver a ponerlo de nuevo no conserva lo que hayamos establecido y lo perderemos. Así que mucho cuidado.
  • No es necesario usar una de estas acciones para mostrar información sobre variables. Para eso está la ventana de "watch", y esto no debería ser un sustituto de la misma.

¡Espero que te resulte útil!

Fecha de publicación:
José Manuel Alarcón Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José Manuel Alarcón
Archivado en: Trucos

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (1) -

Mas que util a la hora de una buena sesión de debug.
Realmente muy valioso el hecho de no tener que para la ejecución para obtener información de lo que esta pasando en nuestro código.
Excelente post.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.