En el contexto de Visual Studio, cuando depure la aplicación, normalmente significa que está ejecutando la aplicación con el depurador asociado, es decir, en modo de depurador.
Al hacerlo, el depurador proporciona muchas maneras de ver lo que hace el código mientras se ejecuta. Puede recorrer el código y examinar los valores almacenados en variables, establecer relojes en variables para ver cuándo cambian los valores y examinar la ruta de acceso de ejecución del código.
Aunque la aplicación de demostración es C#, la mayoría de las características son aplicables a C++, Visual Basic, F#, Python, JavaScript y otros lenguajes compatibles con Visual Studio. F# no admite Edit-and-continue. F# y JavaScript no admiten la ventana Automático.
Preparar Visual Studio para depurar
Si ya tiene Visual Studio, pero la carga de trabajo de desarrollo de escritorio de .NET no está instalada, vaya a Herramientas>Obtener herramientas y características..., que abre el Instalador de Visual Studio.
En primer lugar, cree un proyecto de aplicación de consola de C#/.NET.
- Abra Visual Studio.
- En el cuadro de búsqueda de la ventana Crear un proyecto, escriba consola.
- Si no ve la plantilla Aplicación de Consola, puede instalarla desde la ventana Crear un nuevo proyecto.
- En el mensaje ¿No encuentras lo que estás buscando?, elige el vínculo Instalar más herramientas y características.
- En la ventana Configurar el nuevo proyecto, escriba GetStartedDebugging en el cuadro Nombre del proyecto.
Para iniciar la aplicación con el depurador asociado, presione F5 o elija el botón Iniciar depuración en la barra de herramientas de depuración.
En su mayoría, en este artículo se usan métodos abreviados de teclado. Es una manera rápida de ejecutar comandos del depurador.
F5 inicia la aplicación con el depurador asociado al proceso de aplicación.
Para detener el depurador, presione Mayús+F5 o elija el botón Detener depuración en la barra de herramientas de depuración.
Establecer puntos de interrupción
Los puntos de interrupción son una de las características esenciales para una depuración confiable.
Puede establecer puntos de interrupción en los que desea que Visual Studio pause el código en ejecución.
Los puntos de interrupción son una característica útil cuando conoce la línea o sección del código que desea examinar con detalle.
Para iniciar la depuración, seleccione F5 o elija el botón Destino de depuración de la barra de herramientas Estándar, el botón Iniciar depuración de la barra de herramientas Depurar o Depurar>Iniciar depuración en la barra de menús.
Cuando la aplicación no se está ejecutando, F5 inicia el depurador, que ejecuta la aplicación hasta que alcanza el primer punto de interrupción.
La flecha amarilla apunta a la instrucción en la que se detuvo el depurador.
La flecha amarilla representa la sentencia en la que el depurador se ha detenido, lo cual también suspende la ejecución de la aplicación en el mismo punto.
Mientras está suspendido, puede observar los valores de las variables o el comportamiento de la memoria.
Los puntos de interrupción son una de las características más básicas y esenciales de una depuración confiable.
Puede establecer puntos de interrupción en cualquier línea de código que quiera examinar con detalle en tiempo de ejecución.
Recorrer el código paso a paso
Proporcionamos los métodos abreviados de teclado para la mayoría de los comandos porque hacen que la navegación del código de la aplicación sea más rápida.
| Acción | Atajo | Descripción |
|---|---|---|
| Iniciar o continuar la depuración | F5 | Inicia la aplicación con el depurador asociado al proceso de aplicación. |
| Depurar paso a paso por procedimientos | F10 | Avanza el depurador sin entrar en funciones ni métodos. |
| Depurar paso a paso por instrucciones | F11 | Avanza la ejecución de la aplicación una instrucción a la vez. |
| Salir del método | Mayús+F11 | Sale del método actual y vuelve al punto desde el que fue llamado. |
| Ejecutar hasta el cursor | Ctrl+F10 | Ejecuta el código hasta la línea seleccionada. |
| Detener la depuración | Mayús+F5 | Detiene la sesión de depuración. |
| Reiniciar | Ctrl+Mayús+F5 | Detiene el depurador y, luego, lo reinicia en un paso. |
Usar F10: paso a paso por procedimientos
Para avanzar el depurador a la siguiente instrucción, presione F10 o elija el botón Depurar paso a paso por procedimientos en la barra de herramientas de depuración.
Otro modo es elegir Depurar>Depurar paso a paso por procedimientos en la barra de menú.
F10 hace avanzar el depurador sin depurar las funciones ni los métodos del código de la aplicación paso a paso por instrucciones, aunque el código se sigue ejecutando.
Al presionar F10, puede omitir el código que no le interesa. De este modo, puede obtener rápidamente el código en el que esté más interesado.
Al presionar F10 durante la llamada al método SendMessage, se saltó el código de implementación de SendMessage.
Para recorrer en iteración el bucle for varias veces, seleccione F10 repetidamente.
El valor de la variable cambia con cada iteración del bucle for, mostrando los valores de f, luego fr, luego fre, etc.
Usar F11: paso a paso por instrucciones
F11 es el comando Step Into y avanza la ejecución de la aplicación una instrucción a la vez.
F11 es una buena manera de examinar el flujo de ejecución con más detalle.
Mientras la ejecución del código está en pausa en el bucle for del método Main, seleccione F11 o elija el botón Depurar paso a paso por instrucciones en la barra de herramientas de depuración.
F11 le ayuda a examinar el flujo de ejecución del código en mayor profundidad.
Para entrar en un método desde una llamada de método, seleccione F11.
De forma predeterminada, el depurador omite la depuración paso a paso de métodos que no son de usuario.
En el código administrado, verá un cuadro de diálogo en el que se le pregunta si desea recibir una notificación al pasar automáticamente por las propiedades y operadores, que es el comportamiento predeterminado.
Salir de un método con Mayús+F11
Para salir del método SendMessage, presione Mayús+F11 o elija el botón Salir de la depuración de la barra de herramientas de depuración.
Ve el puntero amarillo de nuevo en el bucle for del método Main, detenido en la llamada de método SendMessage.
Supongamos que ha terminado de analizar el método SendMessage y desea abandonar la función, pero permanecer en el depurador.
Ejecutar hasta hacer clic
En el editor de código, pase el cursor sobre la llamada al método Console.WriteLine en el método SendMessage hasta que aparezca el botón Run to Click.
Elija el botón Ejecutar hasta hacer clic.
Como alternativa, con el cursor en la instrucción Console.WriteLine, seleccione Ctrl+F10.
El uso del botón Run to Click es similar a establecer un punto de interrupción temporal.
Este comando también es útil para moverse rápidamente dentro de una región visible del código de la aplicación.
Puede usar Run to Click en cualquier archivo abierto.
Al editar código, en lugar de pausar en el depurador, haga clic con el botón derecho en una línea de código de la aplicación y elija Ejecutar al cursor o presione Ctrl+F10.
Este comando inicia la depuración y establece un punto de interrupción temporal en la línea de código actual.
El uso de este botón es similar a establecer un punto de interrupción temporal.
Reiniciar la aplicación
El botón Reiniciar permite ahorrar tiempo, ya que hace que no sea necesario detener la aplicación y reiniciar el depurador.
Reiniciar detiene el depurador y, luego, lo reinicia en un paso.
Para reiniciar la aplicación, presione la combinación de teclas Ctrl+Mayús+F5.
Ahorra tiempo en comparación con detener la aplicación y reiniciar el depurador.
Inspeccionar variables durante la depuración
Una de las características más útiles del depurador es su capacidad de inspeccionar una variable.
El depurador tiene características que permiten inspeccionar variables.
Hay diferentes maneras de inspeccionar variables.
A menudo, cuando intenta depurar un problema, está intentando averiguar si las variables tienen valores que espera en un momento determinado.
Mientras la ejecución del código está en pausa en la instrucción name += letters[i], pase el ratón por encima de la variable letters.
También puede pasar el cursor sobre una variable en el editor para ver su valor actual.
Las ventanas Automático y Variables locales muestran valores de variables durante la depuración.
Las ventanas solo están disponibles durante una sesión de depuración.
Ventana Automático
En la ventana Autos, ve las variables junto con su valor actual y su tipo.
La ventana Automático muestra las variables usadas en la línea actual o en la línea anterior.
La ventana de Automático se muestran todas las variables usadas en la línea actual en la que se encuentra el depurador y en la línea anterior.
En C++, la ventana muestra variables en las tres líneas de código anteriores.
F# y JavaScript no admiten la ventana Automático.
Ventana Variables locales
A continuación, mire la ventana Variables locales.
En este ejemplo, el objeto this y el objeto f están en el ámbito.
La ventana Variables locales permite consultar las variables disponibles en el ámbito actual mientras la ejecución está detenida.
Ventana Inspección
Puede especificar una variable o una expresión que desee vigilar mientras recorre el código.
Puede usar una ventana Inspección para especificar una variable o una expresión que quiera supervisar.
A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que está viendo.
En este ejemplo, se ha establecido una inspección para el objeto y puede ver cómo cambia su valor conforme avanza en el depurador.
La ventana Inspección es especialmente útil cuando quiere conservar una variable visible aunque cambie la línea de código actual.
Comprender la pila de llamadas
En la ventana Pila de llamadas se muestra el orden en el que se llama a los métodos y las funciones.
La pila de llamadas puede ayudarle a comprender el flujo de ejecución de la aplicación.
La línea superior de la ventana Pila de llamadas muestra la función actual, que es el método SendMessage.
La segunda línea muestra la función o la propiedad desde la que se llamó, y así sucesivamente.
La pila de llamadas es una buena manera de examinar y comprender el flujo de ejecución de una aplicación.
Seleccione F11 varias veces hasta que vea que el depurador se detiene en el método SendMessage.
Puede hacer doble clic en una línea de código para ver ese código fuente, lo cual también cambia el ámbito actual bajo inspección por el depurador.
También puede usar los menús contextuales de la ventana Pila de llamadas para hacer otras cosas.
Por ejemplo, puede insertar puntos de interrupción en funciones especificadas, avanzar el depurador mediante Ejecutar al cursor y examinar el código fuente.
En la ventana Pila de llamadas, puede hacer doble clic en una línea de código para ir a ese código fuente, que cambia el ámbito actual bajo inspección por el depurador.
Ejemplo de ejecución paso a paso
El siguiente flujo permite observar cómo cambia una variable durante las iteraciones:
- Establezca un punto de interrupción en el bucle for del método Main.
- Presione F5 para iniciar la aplicación con el depurador asociado.
- Cuando el depurador se detenga en el punto de interrupción, observe la flecha amarilla.
- Presione F10 varias veces para avanzar sin entrar en los métodos llamados.
- Observe cómo el valor de la variable cambia con cada iteración del bucle for.
- Presione F11 para entrar en un método desde una llamada de método.
- Presione Mayús+F11 para salir del método y volver al código que lo llamó.
La salida de demostración muestra cómo se construye progresivamente el texto:
Hello, f!
Hello, fr!
Hello, fre!
Hello, fred!
Hello, fred !
Hello, fred s!
Hello, fred sm!
Hello, fred smi!
Hello, fred smit!
Hello, fred smith!
Depurar excepciones
Cuando la aplicación produce una excepción, el depurador le lleva a la línea de código que ha producido esa excepción.
En este ejemplo, el asistente de excepciones muestra una System.NullReferenceException y un mensaje de error que indica que la referencia de objeto no está establecida en una instancia del objeto.
El asistente de excepciones es una característica excelente que puede ayudarle a depurar errores.
También se pueden hacer cosas como ver detalles de errores y agregar una inspección desde el Asistente de excepciones.
O bien, si fuera necesario, se pueden cambiar las condiciones para producir la excepción concreta.
Ayuda con Copilot
Si tiene Copilot, puede obtener asistencia de inteligencia artificial mientras depura excepciones.
Durante la depuración, también puede buscar el botón Analizar con Copilot.
Durante la depuración, también puede buscar el botón Preguntar a Copilot.
Para obtener un flujo de trabajo más completo en cuanto a agentes, use el Agente del depurador para guiar la resolución de errores de principio a fin, desde la reproducción de un problema hasta la validación de la corrección con datos en tiempo real.
Para obtener más información, consulte Debug with Copilot.
Configurar las propiedades de depuración
Puede configurar el proyecto para que se compile como una configuración de depuración o versión, establecer las propiedades del proyecto para la depuración o establecer la configuración general para la depuración.
Las propiedades de depuración son específicas de cada tipo de proyecto.
Por ejemplo, puede especificar un argumento para pasar a una aplicación al iniciarla.
Para acceder a las propiedades específicas del proyecto, haga clic con el botón derecho en el proyecto en Solution Explorer y seleccione Properties.
La configuración adecuada del proyecto permite controlar cómo se inicia la aplicación y qué información está disponible durante la sesión de depuración.
Depurar varios proyectos y procesos
Visual Studio puede depurar una solución que tenga varios procesos.
Cuando más de un proyecto en una solución de Visual Studio se puede ejecutar de forma independiente, usted puede seleccionar qué proyecto debe iniciar con el depurador.
El depurador también puede asociarse a aplicaciones que se ejecutan en procesos fuera de Visual Studio, incluidos dispositivos remotos.
Después de adjuntarte a una aplicación, puedes usar el depurador de Visual Studio.
Es posible que las características de depuración estén limitadas.
El depurador no se conecta automáticamente a un proceso secundario iniciado por un proceso depurado, aunque el proyecto secundario esté en la misma solución.
A veces, es posible que tenga que depurar el código de inicio de una aplicación iniciada por otro proceso.
Algunos ejemplos son los servicios y las acciones de configuración personalizadas.
Se puede asociar a varios procesos al depurar, pero solo hay un proceso activo en el depurador en un momento dado.
Puede establecer el proceso activo o actual en la barra de herramientas Ubicación de depuración o en la ventana Procesos.
En la ventana Procesos, el proceso actual se marca mediante una flecha amarilla.
Al cambiar a un proceso, se establece como el proceso actual para fines de depuración.
Controlar la ejecución de varios procesos
Al depurar una aplicación con varios procesos, los comandos de interrumpir, paso a paso y continuar del depurador afectan a todos los procesos de manera predeterminada.
Por ejemplo, cuando un proceso se suspende en un punto de interrupción, la ejecución de todos los demás procesos también se suspende.
Todos los procesos se ejecutan durante los pasos actuales del proceso.
Los procesos suspendidos se reanudan.
Si empieza a depurar un proceso desde una solución de Visual Studio, se adjunta a otro proceso que ya se está ejecutando y, a continuación, elige Detener depuración, finaliza la sesión de depuración.
Si está seleccionado, Depurar>Detener depuración se desasocia del proceso seleccionado.
Código fuente, símbolos y desensamblado
Para navegar por el código fuente de un proceso, el depurador necesita acceso a sus archivos de código fuente y archivos de símbolos.
Si no puede acceder a los archivos de un proceso, puede navegar mediante la ventana Desensamblado.
Depuración de aplicaciones ya iniciadas
El depurador puede asociarse a aplicaciones que se ejecutan en procesos fuera de Visual Studio, incluido en dispositivos remotos.
Después de adjuntarte a una aplicación, puedes usar el depurador de Visual Studio.
Es posible que las características de depuración estén limitadas.
A veces, es posible que tenga que depurar el código de inicio de una aplicación iniciada por otro proceso.
Algunos ejemplos son los servicios y las acciones de configuración personalizadas.
Snapshot Debugger e IntelliTrace
Para Visual Studio Enterprise, solo el Snapshot Debugger toma una instantánea de las aplicaciones en producción cuando se ejecuta el código de su interés.
Para indicar al depurador que tome una instantánea, establezca puntos de acoplamiento y puntos de registro en el código.
El depurador le permite ver exactamente qué salió mal, sin afectar el tráfico de la aplicación de producción.
La recopilación de instantáneas está disponible para aplicaciones ASP.NET que se ejecutan en Azure App Service.
La característica step-back de IntelliTrace toma automáticamente una instantánea de la aplicación en cada punto de interrupción y evento de paso del depurador.
Las instantáneas grabadas le permiten volver a los puntos de interrupción o pasos anteriores y ver el estado de la aplicación tal como estaba en el pasado.
Puede navegar y ver instantáneas utilizando los botones Paso hacia atrás y Paso hacia adelante en la barra de herramientas de Depuración.
Cuándo utilizar herramientas de generación de perfiles
Si la aplicación se ejecuta demasiado lentamente o usa demasiada memoria, es posible que deba probar la aplicación con las herramientas de generación de perfiles al principio.
El depurador permite analizar el flujo de ejecución y el estado de las variables, mientras que las herramientas de generación de perfiles ayudan a investigar problemas de rendimiento y consumo de memoria.
Buenas prácticas para encontrar errores
No tengas miedo de repetir la depuración las veces que haga falta para intentar detectar el error.
Es posible que, si depuras el código, no localices exactamente dónde está el error, pero pueda darte una pista de dónde podría estar.
En este caso, es recomendable repetir la depuración centrándote en la parte sospechosa de código.
Para poder depurar correctamente, tienes que tener claro algo importante: debes saber a ciencia cierta qué es lo que esperabas obtener con tu código para poder compararlo con lo que realmente estás obteniendo.
Los puntos de interrupción son una característica útil cuando conoce la línea de código o la sección de código que desea examinar con detalle en tiempo de ejecución.
Una de las características más útiles del depurador es su capacidad de inspeccionar una variable.
En este tutorial, ha aprendido a iniciar el depurador, recorrer el código e inspeccionar variables.

tags: #depurar #por #pasos #en #visual #estudio
Publicaciones populares:
- Guía del desincrustante para filtros de arena y cristal
- Guía de uso de mascarillas FFP2 reutilizables Turbo
- Composición de Miconeo HEP y posibles efectos
- Todo lo que debes saber sobre los filtros de generador: tipos, funciones y mantenimiento
- Definiciones sobre filtración de aire: términos y conceptos
