Compartir a través de


Uso de mapas de código para depurar las aplicaciones

Los mapas de código en Visual Studio pueden ayudarle a evitar perderse en bases de código grandes, código desconocido o código heredado. Por ejemplo, al depurar, es posible que tenga que examinar el código en muchos archivos y proyectos. Use mapas de código para navegar por partes de código y comprender las relaciones entre ellos. De este modo, no es necesario realizar un seguimiento de este código en la cabeza ni dibujar un diagrama independiente. Por lo tanto, cuando se interrumpe tu trabajo, los mapas de código ayudan a refrescar tu memoria sobre el código en el que estás trabajando.

Mapa de código: asignación de relaciones en el código

Una flecha verde muestra dónde aparece el cursor en el editor.

Para obtener más información sobre los comandos y las acciones que puede usar al trabajar con mapas de código, consulte Examinar y reorganizar mapas de código.

Obtenga más información sobre la depuración en Visual Studio con la herramienta Depurador.

Nota:

Para crear y editar mapas de código, necesita Visual Studio Enterprise Edition. En las ediciones Visual Studio Community y Professional, puede abrir diagramas que se generaron en Enterprise Edition, pero no puede editarlos.

Entender el problema

Supongamos que hay un error en un programa de dibujo en el que está trabajando. Para reproducir el error, abra la solución en Visual Studio y presione F5 para iniciar la depuración.

Cuando dibuja una línea y elige Deshacer mi último trazo, no ocurre nada hasta que dibuja la siguiente línea.

Mapa de código: error de reproducción

Por lo tanto, empiece a investigar buscando el método Undo. Lo encuentra en la PaintCanvas clase .

Mapa de código: búsqueda de código

Empieza a mapear el código

Ahora empiece a mapear el método undo y sus relaciones. En el editor de código, agregue el undo método y los campos a los que hace referencia a un nuevo mapa de código. Al crear un nuevo mapa, puede tardar algún tiempo en indexar el código. Esto ayuda a que las operaciones posteriores se ejecuten más rápido.

Mapa de código: mostrar el método y los campos relacionados

Sugerencia

El resaltado verde muestra los últimos elementos que se agregaron al mapa. La flecha verde muestra la posición del cursor en el código. Las flechas entre elementos representan relaciones diferentes. Puede obtener más información sobre los elementos en el mapa moviendo el mouse sobre ellos y examinando su información sobre herramientas.

Mapa de código: mostrar información sobre herramientas

Para ver la definición de código de cada campo, haga doble clic en el campo en el mapa o seleccione el campo y presione F12. La flecha verde se mueve entre los elementos del mapa. El cursor del editor de código también se mueve automáticamente.

Captura de pantalla de una ventana de mapa de código con el campo historial seleccionado y una ventana del editor de código donde se resaltan todas las instancias del historial.

Captura de pantalla de una ventana de mapa de código con el campo paintObjects seleccionado y una ventana del editor de código donde se resaltan todas las instancias de paintObjects.

Sugerencia

También puede mover la flecha verde en el mapa moviendo el cursor en el editor de código.

Descripción de las relaciones entre fragmentos de código

Ahora quiere saber qué otro código interactúa con los history campos y paintObjects . Puede agregar todos los métodos que hacen referencia a estos campos al mapa. Puede hacerlo desde el mapa o desde el editor de código.

Mapa de código: buscar todas las referencias

Abrir un mapa de código desde el editor de código

Nota:

Si agregas elementos de un proyecto que se comparte entre varias aplicaciones, como Windows Phone o la Tienda Windows, esos elementos siempre aparecen con el proyecto de aplicación activo actualmente en el mapa. Por lo tanto, si cambia el contexto a otro proyecto de aplicación, el contexto del mapa también cambia para los elementos recién agregados del proyecto compartido. Las operaciones que se realizan con un elemento en el mapa solo se aplican a los elementos que comparten el mismo contexto.

Cambie el diseño para reorganizar el flujo de relaciones y facilitar la lectura del mapa. También puede mover elementos por el mapa arrastrándolos.

Captura de pantalla de una ventana de mapa de código con el menú Diseño abierto y el comando Izquierda a Derecha seleccionado.

Sugerencia

De forma predeterminada, el diseño incremental está activado. Esto reorganiza el mapa lo menos posible al agregar nuevos elementos. Para reorganizar todo el mapa cada vez que agregue nuevos elementos, desactive El diseño incremental.

Captura de pantalla de una ventana de mapa de código con las flechas de relaciones entre los campos que apuntan de izquierda a derecha.

Vamos a examinar estos métodos. En el mapa, haga doble clic en el método PaintCanvas o seleccione este método y presione F12. Aprenderá que este método crea history y paintObjects como listas vacías.

Captura de pantalla de una ventana de mapa de código con el método PaintCanvas seleccionado y una imagen de fragmento de código que muestra el nombre del método PainCanvas resaltado.

Ahora repita los mismos pasos para examinar la definición del clear método. Aprenderá que clear realiza algunas tareas con paintObjects y history. A continuación, llama al método Repaint.

Captura de pantalla de una ventana de mapa de código con el método Clear seleccionado y una imagen de fragmento de código que muestra el código para el método Clear.

Ahora examine la definición del addPaintObject método. También realiza algunas tareas con history y paintObjects. También llama a Repaint.

Captura de pantalla de una ventana de mapa de código con el método addPaintObject seleccionado y una imagen de fragmento de código que muestra el código para el método addPaintObject.

Busque el problema examinando el mapa.

Parece que todos los métodos que modifican history y paintObjects llaman a Repaint. Sin embargo, el undo método no llama a Repaint, aunque undo modifica los mismos campos. Entonces, ¿crees que puedes corregir este problema llamando a Repaint desde undo?

Mapa de código: buscar llamada de método que falta

Si no tenía un mapa para mostrar esta llamada faltante, podría haber sido más difícil encontrar este problema, especialmente con un código más complejo.

Compartir la detección y los pasos siguientes

Antes de que usted u otra persona corrija este error, puede tomar notas en el mapa sobre el problema y cómo corregirlo.

Mapa de código: comentarios y elementos de marca para seguimiento

Por ejemplo, puede agregar comentarios al mapa y marcar elementos mediante colores.

Mapa de código: elementos marcados y comentados

Si tiene Microsoft Outlook instalado, puede enviar por correo electrónico el mapa a otros usuarios. También puede exportar el mapa como una imagen u otro formato.

Mapa de código: compartir, exportar, correo

Corrige el problema y muestra lo que hiciste

Para corregir este error, agregue la llamada de Repaint en undo.

Mapa de código: Agregar llamada al método faltante

Para confirmar la corrección, reinicias la sesión de depuración e intentas reproducir el error. Ahora, al elegir Deshacer mi último trazo funciona como se espera y confirma que la corrección fue correcta.

Mapa de código - Confirmar corrección de código

Puede actualizar el mapa para mostrar la corrección que ha realizado.

Mapa de código: actualización del mapa con la llamada al método que falta

El mapa muestra ahora un vínculo entre deshacer y repintar.

Mapa de código: mapa actualizado con llamada de método

Nota:

Al actualizar el mapa, es posible que vea un mensaje que indica el índice de código usado para crear el mapa se actualizó. Esto significa que alguien cambió el código, lo que hace que el mapa no coincida con el código actual. Esto no le impide actualizar el mapa, pero es posible que tenga que volver a crear el mapa para confirmar que coincide con el código.

Ya ha terminado con su investigación. Encontró y corrigió correctamente el problema mediante el mapeo del código. También tiene un mapa que le ayuda a navegar por el código, recordar lo que ha aprendido y muestra los pasos que ha llevado a cabo para solucionar el problema.