Tutorial: Información sobre cómo depurar código de C# con Visual Studio
En este artículo se describen las características del depurador de Visual Studio en un tutorial paso a paso. Si quiere ahondar en las características del depurador, vea Primer vistazo al depurador. Normalmente, depurar una aplicación significa ejecutar la aplicación con el depurador activado. Al hacer esta tarea, el depurador ofrece muchas formas de ver lo que hace el código durante la ejecución. Esto permite revisar el código y fijarse en los valores almacenados en variables, establecer inspecciones en ellas para ver cuándo cambian los valores, examinar la ruta de ejecución del código, ver si una rama de código está en funcionamiento, etc. Si este ejercicio es la primera vez que intenta depurar código, le recomendamos que lea Depuración para principiantes sin experiencia antes de continuar con este artículo.
Aunque la aplicación de demostración está en 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 Editar y continuar. F# y JavaScript no admiten la ventana Automático). Las capturas de pantalla son de código C#.
En este tutorial va a:
- Iniciar el depurador y llegar a puntos de interrupción
- Conocer los comandos para analizar el código en el depurador
- Inspeccionar variables en la información sobre datos y las ventanas del depurador
- Examinar la pila de llamadas
Requisitos previos
Debe tener instalados Visual Studio 2022 y la carga de trabajo Desarrollo de escritorio de .NET.
Debe tener instalados Visual Studio 2019 y la carga de trabajo Desarrollo multiplataforma de .NET Core.
Si todavía no ha instalado Visual Studio, vaya a la página de descargas de Visual Studio para instalarlo de forma gratuita.
Si tiene que instalar la carga de trabajo pero ya tiene Visual Studio, vaya a Herramientas>Obtener herramientas y características… y se abrirá el Instalador de Visual Studio. Se iniciará el Instalador de Visual Studio. Elija la carga de trabajo Desarrollo multiplataforma de .NET Core y, después, Modificar.
Si ya tiene instalado Visual Studio, pero la carga de trabajo Desarrollo de escritorio de .NET no lo está, vaya a Herramientas>Get Tools and Features... (Obtener herramientas y características...) para iniciar el Instalador de Visual Studio. En el Instalador de Visual Studio, elija la carga de trabajo Desarrollo de escritorio de .NET y, luego, seleccione Modificar.
Crear un proyecto
En primer lugar, cree un proyecto de aplicación de consola de .NET Core. En el tipo de proyecto se incluyen todos los archivos de plantilla que necesita, sin necesidad de agregar nada más.
Abierto Visual Studio. Si la ventana de inicio no está abierta, seleccione Archivo>Ventana de inicio.
En la ventana de inicio, seleccione Crear un proyecto.
En el cuadro de búsqueda de la ventana Crear un proyecto, escriba consola. Seguidamente, elija C# en la lista de lenguajes y luego, Windows en la lista de plataformas.
Después de aplicar los filtros de lenguaje y plataforma, elija la plantilla Aplicación de consola para .NET Core y luego seleccione Siguiente.
Nota:
Si no ve la plantilla Aplicación de consola, puede instalarla desde la ventana Crear un proyecto. En el mensaje ¿No encuentra lo que busca? , elija el vínculo Instalar más herramientas y características. Luego, en el Instalador de Visual Studio, elija la carga de trabajo Desarrollo multiplataforma de .NET Core.
En la ventana Configurar el nuevo proyecto, escriba GetStartedDebugging en el cuadro Nombre del proyecto. Después, seleccione Siguiente.
Seleccione la plataforma de destino recomendada (compatibilidad con .NET 8.0 o a largo plazo) y, a continuación, seleccione Crear.
En el cuadro de búsqueda de la ventana Crear un proyecto, escriba consola. Seguidamente, elija C# en la lista de lenguajes y luego, Windows en la lista de plataformas.
Después de aplicar los filtros de lenguaje y plataforma, elija la plantilla Aplicación de consola y, luego, seleccione Siguiente.
Nota:
Si no ve la plantilla Aplicación de consola, puede instalarla desde la ventana Crear un proyecto. En el mensaje ¿No encuentra lo que busca? , elija el vínculo Instalar más herramientas y características. A continuación, en el Instalador de Visual Studio, elija la carga de trabajo Desarrollo de escritorio de .NET.
En la ventana Configurar el nuevo proyecto, escriba GetStartedDebugging en el cuadro Nombre del proyecto. Después, seleccione Siguiente.
En la ventana Información adicional, asegúrese de que esté seleccionado .NET 8.0 en el menú desplegable Marco y, luego, seleccione Crear.
Visual Studio se abre en el nuevo proyecto.
Crear la aplicación
En Program.cs, reemplace todo el código predeterminado por el código siguiente:
using System;
class ArrayExample
{
static void Main()
{
char[] letters = { 'f', 'r', 'e', 'd', ' ', 's', 'm', 'i', 't', 'h'};
string name = "";
int[] a = new int[10];
for (int i = 0; i < letters.Length; i++)
{
name += letters[i];
a[i] = i + 1;
SendMessage(name, a[i]);
}
Console.ReadKey();
}
static void SendMessage(string name, int msg)
{
Console.WriteLine("Hello, " + name + "! Count to " + msg);
}
}
Inicio del depurador
Presione F5 (Depurar > Iniciar depuración) o el botón Iniciar depuración en la barra de herramientas de depuración.
Al pulsar F5, la aplicación se inicia con el depurador activado para analizar los procesos. Como de momento no hemos hecho nada especial para examinar el código, Por lo tanto, la aplicación solo se carga y ve esta salida de la consola.
Hello, f! Count to 1 Hello, fr! Count to 2 Hello, fre! Count to 3 Hello, fred! Count to 4 Hello, fred ! Count to 5 Hello, fred s! Count to 6 Hello, fred sm! Count to 7 Hello, fred smi! Count to 8 Hello, fred smit! Count to 9 Hello, fred smith! Count to 10
En este tutorial, analizará con más profundidad el uso de esta aplicación junto con el depurador y verá las características del depurador.
Detenga el depurador; para ello, presione el botón de detención rojo (Shift + F5).
En la ventana de consola, presione una tecla para cerrarla.
Aquí se usan principalmente métodos abreviados de teclado, ya que es una manera rápida de ejecutar comandos del depurador. También se anotan los comandos equivalentes, como los comandos de menú o de barra de herramientas.
Para iniciar el depurador, seleccione F5 o elija el botón Destino de depuración en la barra de herramientas estándar. También puede elegir el botón Iniciar depuración en la barra de herramientas de depuración o Depurar>Iniciar depuración en la barra de menú.
F5 inicia la aplicación con el depurador asociado al proceso de aplicación. Puesto que no hemos hecho nada especial para examinar el código, la aplicación se ejecuta hasta su finalización y puede ver la salida de la consola.
Hello, f! Count to 1 Hello, fr! Count to 2 Hello, fre! Count to 3 Hello, fred! Count to 4 Hello, fred ! Count to 5 Hello, fred s! Count to 6 Hello, fred sm! Count to 7 Hello, fred smi! Count to 8 Hello, fred smit! Count to 9 Hello, fred smith! Count to 10
Para detener el depurador, presione Mayús+F5 o elija el botón Detener depuración en la barra de herramientas de depuración. Otro modo es elegir Depurar>Detener depuración en la barra de menú.
En la ventana de la consola, presione una tecla para cerrarla.
Establecer un punto de interrupción e iniciar el depurador
En el bucle
for
de la funciónMain
, establezca un punto de interrupción haciendo clic en el margen izquierdo de la siguiente línea de código:name += letters[i];
En el lugar en el que establezca el punto de interrupción aparecerá un círculo rojo .
Los puntos de interrupción son una de las características más básicas y esenciales de una depuración confiable. Un punto de interrupción indica dónde Visual Studio debe suspender la ejecución de código para poder echar un vistazo a los valores de las variables o al comportamiento de la memoria, o determinar si se está ejecutando o no una bifurcación de código.
Presione F5 o el botón Iniciar depuración. La aplicación se inicia y el depurador se ejecuta hasta la línea de código en la que haya establecido el punto de interrupción.
La flecha amarilla representa la instrucción en la que el depurador se ha detenido, lo cual también suspende la ejecución de la aplicación en el mismo punto (esta instrucción todavía no se ha ejecutado).
Si la aplicación todavía no se está ejecutando, F5 inicia el depurador y lo detiene en el primer punto de interrupción. En caso contrario, F5 permite continuar ejecutando la aplicación hasta el siguiente punto de interrupción.
Los puntos de interrupción son una característica de utilidad cuando se conoce la línea o la sección de código que se quiere examinar en detalle. Para obtener información sobre los diferentes tipos de puntos de interrupción que se pueden establecer, como los puntos de interrupción condicionales, vea Uso de puntos de interrupción.
En el bucle
for
de la funciónMain
, establezca un punto de interrupción haciendo clic en el margen izquierdo de la siguiente línea de código:name += letters[i];
En el lugar en el que establezca el punto de interrupción aparecerá un círculo rojo.
Los puntos de interrupción son una de las características esenciales para una depuración confiable. Puede establecer puntos de interrupción donde quiera que Visual Studio pause la ejecución de código, de forma que pueda examinar los valores de las variables o el comportamiento de la memoria, o saber si una bifurcación de código se ejecuta o no.
Para iniciar la depuración, seleccione F5 o elija el botón Destino de depuración en la barra de herramientas estándar. Otro modo es elegir el botón Iniciar depuración en la barra de herramientas de depuración o Depurar>Iniciar depuración en la barra de menú. La aplicación se inicia y el depurador se ejecuta hasta la línea de código en la que haya establecido el punto de interrupción.
La flecha amarilla apunta a la instrucción en la que se detuvo el depurador. La ejecución de la aplicación se pausa en el mismo punto, con la instrucción aún sin ejecutar.
Cuando la aplicación no se está ejecutando, al presionar F5 se inicia el depurador, que ejecuta la aplicación hasta llegar al primer punto de interrupción. Si la aplicación está en pausa en un punto de interrupción, al presionar F5 se seguirá ejecutando la aplicación hasta que llegue al siguiente punto de interrupción.
Los puntos de interrupción son una característica útil cuando se conoce la línea o la sección de código que se quiere examinar en detalle. Para más información sobre los diferentes tipos de puntos de interrupción que se pueden establecer, como los puntos de interrupción condicionales, consulte Uso de puntos de interrupción.
Navegación por el código e inspección de los datos mediante sugerencias de datos
Normalmente, aquí usamos métodos abreviados de teclado porque son una buena forma de ejecutar rápidamente la aplicación en el depurador, pero los comandos equivalentes, como los comandos de menú, se muestran entre paréntesis.
Mientras la ejecución del código está en pausa en la instrucción
name += letters[i]
, mantenga el mouse sobre la variableletters
y verá su valor predeterminado, el valor del primer elemento de la matrizchar[10]
.Las características que le permiten inspeccionar las variables son una de las más útiles del depurador y ofrecen diferentes formas de hacerlo. A menudo, para depurar un problema, debe intentar averiguar si las variables están almacenando los valores que espera que tengan en un momento determinado.
Expanda la variable
letters
para ver sus propiedades, que incluyen todos los elementos que contiene.Después, mantenga el mouse sobre la variable
name
y verá su valor actual, una cadena vacía.Presione F10 dos veces, o bien elija Depurar > Depurar paso a paso por procedimientos, para avanzar hasta la llamada de método
SendMessage
y, después, vuelva a presionar F10.F10 hace avanzar el depurador hasta la siguiente instrucción sin depurar las funciones ni los métodos del código de la aplicación paso a paso por instrucciones (el código se sigue ejecutando). Al presionar F10 en la llamada de método
SendMessage
, se omite el código de implementación deSendMessage
(algo que quizás no nos interese en este momento).Presione F10 varias veces, o bien elija Depurar>Depurar paso a paso por procedimientos, para iterar varias veces por el bucle
for
, deténgase de nuevo en el punto de interrupción y mantenga el mouse sobre la variablename
cada vez para comprobar su valor.El valor de la variable cambia con cada iteración del bucle
for
y muestra los valores def
, después,fr
, luego,fre
, etc. Para hacer que el depurador avance por el bucle más rápido en este escenario, puede presionar F5, o bien elegir Depurar>Continuar, en su lugar, lo que le permite avanzar hasta el punto de interrupción en lugar de hasta la siguiente instrucción.A menudo, al realizar una depuración, queremos una forma rápida de comprobar los valores de las propiedades de las variables para ver si se almacenan los valores correspondientes, y las sugerencias de datos son una buena forma de verlo.
Mientras la ejecución del código permanece en pausa en el bucle
for
del métodoMain
, presione F11 (o seleccione Depurar > Depurar paso a paso por instrucciones) hasta que se detenga la llamada de métodoSendMessage
.Debe estar en esta línea de código:
SendMessage(name, a[i]);
Presione F11 una vez más para entrar en el método
SendMessage
.El puntero de color amarillo avanza hasta el método
SendMessage
.F11 es el comando Depurar paso a paso por instrucciones y permite avanzar la ejecución de la aplicación de instrucción en instrucción. F11 es una buena forma de examinar el flujo de ejecución con más detalle. De forma predeterminada, el depurador omite el código que no es de usuario (si quiere más detalles, vea Solo mi código).
Imagine que ha terminado de examinar el método
SendMessage
y quiere salir de él, pero permanecer en el depurador. Puede hacerlo con el comando Salir de la depuración.Presione Mayús + F11 (o Depurar > Salir de la depuración).
Este comando reanuda la ejecución de la aplicación (y hace avanzar el depurador) hasta que se devuelve el método o la función actual.
Debería volver a estar en el bucle
for
del métodoMain
, detenido en la llamada al métodoSendMessage
. Para más información sobre las distintas formas de desplazarse por el código, vea Navegación por el código en el depurador.
Mientras la ejecución del código está en pausa en la instrucción
name += letters[i]
, mantenga el puntero sobre la variableletters
para ver una sugerencia de datos que muestre el tamaño de la matriz y el tipo de elemento,char[10]
.Nota:
Una de las características más útiles del depurador es su capacidad para inspeccionar una variable. A menudo, al depurar un problema, debe intentar averiguar si las variables tienen los valores que espera en un momento determinado. Una buena forma de hacerlo es ver las sugerencias de datos.
Expanda la variable
letters
para ver todos sus elementos de matriz y sus valores.Mantenga el puntero sobre la variable
name
y verá su valor actual, que es una cadena vacía.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ú. Presione F10 dos veces más para avanzar más allá de la llamada de método
SendMessage
.Al presionar F10 avanza el depurador sin depurar paso a paso por instrucciones la función ni los métodos, si bien el código todavía se ejecuta. De este modo, se omite la depuración del código en el método
SendMessage
, que no nos interesa en este momento.Para recorrer en iteración el bucle
for
varias veces, seleccione F10 de forma repetida. Durante cada iteración del bucle, deténgase en el punto de interrupción y, luego, mantenga el puntero sobre la variablename
para comprobar su valor en la sugerencia de datos.El valor de la variable cambia con cada iteración del bucle
for
y muestra los valores def
, después,fr
, luego,fre
, etc. Para hacer avanzar el depurador por el bucle más rápido, seleccione F5 en su lugar, que permite avanzar al punto de interrupción en lugar de a la instrucción siguiente.Mientras la ejecución del código está en pausa en el bucle
for
del métodoMain
, seleccione F11 o elija el botón Depurar paso a paso por instrucciones en la barra de herramientas de depuración. Otro modo es elegir Depurar>Depurar paso a paso por instrucciones en la barra de menú, hasta que llegue a la llamada de métodoSendMessage
.El depurador debe pausarse en esta línea de código:
SendMessage(name, a[i]);
Para depurar paso a paso por instrucciones el método
SendMessage
, presione de nuevo F11.El puntero de color amarillo avanza hasta el método
SendMessage
.F11 le ayuda a examinar el flujo de ejecución del código con más profundidad. Para depurar paso a paso por instrucciones un método desde una llamada de método, seleccione F11. De forma predeterminada, el depurador omite la depuración paso a paso por instrucciones de métodos que no son de usuario. Para información sobre cómo depurar código que no es de usuario, consulte Solo mi código.
Cuando haya terminado de depurar el método
SendMessage
, estará listo para volver al buclefor
del métodomain
.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. Otro modo es elegir Depurar>Salir de la depuración en la barra de menú.La opción Salir de la depuración reanuda la ejecución de la aplicación y hace avanzar el depurador hasta que se devuelve el método o la función actuales.
Ve el puntero amarillo de nuevo en el bucle
for
del métodoMain
, detenido en la llamada de métodoSendMessage
. Para más información sobre las distintas formas de desplazarse por el código, vea Navegación por el código en el depurador.
Navegación por el código con Ejecutar hasta clic
Presione F5 para avanzar de nuevo hasta el punto de interrupción.
En el editor de código, desplácese hacia abajo y mantenga el puntero sobre el método
Console.WriteLine
del métodoSendMessage
hasta que el botón verde Ejecutar hasta hacer clic aparezca. La información sobre herramientas del botón muestra "Ejecutar hasta aquí".Nota:
El botón Run to Click (Ejecutar hasta hacer clic) es una novedad de Visual Studio 2017. (Si no ve el botón con la flecha de color verde, presione F11 en este ejemplo para hacer avanzar el depurador hasta el lugar correcto).
Seleccione el botón Ejecutar hasta clic.
El depurador avanza hasta el método
Console.WriteLine
.Usar este botón es similar a establecer un punto de interrupción temporal. La característica Ejecutar hasta clic es útil para desplazarse rápidamente por un área visible del código de la aplicación (puede seleccionar en cualquier archivo abierto).
Presione F5 para avanzar de nuevo hasta el punto de interrupción.
En el editor de código, mantenga el puntero sobre la llamada de método
Console.WriteLine
del métodoSendMessage
hasta que aparezca el botón verde Ejecutar hasta hacer clic. La información sobre herramientas del botón muestra "Ejecutar hasta aquí".Elija el botón Ejecutar hasta hacer clic. Como alternativa, con el cursor en la instrucción
Console.WriteLine
, presione Ctrl+F10. O bien, haga clic con el botón derecho en la llamada de métodoConsole.WriteLine
y elija Ejecutar hasta el cursor en el menú contextual.El depurador avanza hasta la llamada de método
Console.WriteLine
.El uso del botón Ejecutar hasta hacer clic es parecido a establecer un punto de interrupción temporal y resulta útil para moverse rápidamente dentro de una región visible del código de la aplicación en un archivo abierto.
Reiniciar la aplicación rápidamente
Seleccione el botón Reiniciar en la barra de herramientas de depuración (Ctrl + Mayús + F5).
El botón Reiniciar permite ahorrar tiempo, ya que hace que no sea necesario detener la aplicación y reiniciar el depurador. El depurador se detiene en el primer punto de interrupción que se alcanza al ejecutar el código.
El depurador se detiene de nuevo en el punto de interrupción que ha establecido antes dentro del bucle for
.
Para volver a ejecutar la aplicación desde el principio en el depurador presione Ctrl+Mayús+F5 o elija el botón Reiniciar en la barra de herramientas de depuración. Otro modo es elegir Depurar>Reiniciar en la barra de menú.
Reiniciar detiene el depurador y, luego, lo reinicia, en un paso. Cuando se reinicie el depurador, se ejecuta hasta el primer punto de interrupción, que es el punto de interrupción que estableció anteriormente dentro del bucle for
y, luego, se pausa.
Inspeccionar variables con las ventanas Automático y Variables locales
Vea la ventana Automático, en la parte inferior del editor de código.
Si está cerrada, ábrala mientras está en pausa en el depurador seleccionando Depurar>Ventanas>Automático.
En la ventana Automático puede ver las variables y su valor actual. En la ventana Automático se muestran todas las variables que se usan en la línea actual o en la anterior. Para consultar el comportamiento específico de los lenguajes, vea la documentación.
A continuación, examine la ventana Variables locales en una pestaña situada junto a la ventana Automático.
Expanda la variable
letters
para mostrar los elementos que contiene.En la ventana Variables locales se muestran las variables que se encuentran en el ámbito actual, es decir, en el contexto de ejecución 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. La ventana Automático muestra las variables usadas en la línea actual en la que se encuentra el depurador y en la línea anterior. La ventana Variables locales muestra las variables definidas en el ámbito local, que suele ser la función o el método actuales.
Mientras el depurador está en pausa, examine la ventana Automático de la parte inferior del editor de código.
Si la ventana Automático está cerrada, presione Ctrl+D, A, o elija Depurar>Ventanas>Automático en la barra de menú.
Con el depurador aún en pausa, examine la ventana Variables locales, en una pestaña situada junto a la ventana Automático.
Si la ventana Variables locales está cerrada, presione Ctrl+D, L, o elija Depurar>Ventanas>Variables locales.
En la ventana Variables locales, expanda la variable
letters
para ver sus elementos de la matriz y sus valores.
Para más información sobre las ventanas Automático y Variables locales, consulte Inspección de las variables en las ventanas Variables locales y Automático.
Establecer una inspección
En la ventana del editor de código principal, haga clic con el botón derecho en la variable name
y elija Agregar inspección.
En la parte inferior del editor de código se abre la ventana Inspección. Puede usar una ventana Inspección para especificar una variable (o una expresión) que quiera supervisar.
Ahora, ha establecido una inspección en la variable name
y puede ver cómo cambia su valor según avanza en el depurador. A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que está viendo (y se atenúan cuando están fuera del ámbito).
Puede especificar una variable, o una expresión, que quiera vigilar a medida que avanza por el código agregándola a la ventana Inspección.
Mientras el depurador está en pausa, haga clic con el botón derecho en la variable
name
y elija Agregar inspección.La ventana Inspección se abre de forma predeterminada en la parte inferior del editor de código.
Ahora que ha establecido una inspección sobre la variable
name
, avance por el código para ver que el valor de la variablename
cambia con cada iteración del buclefor
.A diferencia de las otras ventanas de variables, en la ventana Inspección siempre se muestran las variables que está viendo. Las variables que están fuera del ámbito se muestran como no disponibles.
Para obtener más información sobre la ventana Inspección, consulte Inspección de variables con las ventanas de inspección.
Examinar la pila de llamadas
Mientras la ejecución del código está en pausa en el bucle
for
, seleccione la ventana Pila de llamadas, que se abrirá de forma predeterminada en el panel inferior derecho.Si está cerrada, ábrala mientras está en pausa en el depurador seleccionando Depurar>Ventanas>Pila de llamadas.
Presione F11 varias veces hasta que vea que el depurador se detiene en el método
SendMessage
. Eche un vistazo a la ventana 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. En la línea superior se muestra la función actual (el método
SendMessage
en esta aplicación). En la segunda línea se mostrará que se ha llamado aSendMessage
desde el métodoMain
, y así sucesivamente.Nota
La ventana Pila de llamadas es similar a la perspectiva de depuración de algunos IDE, como Eclipse.
La pila de llamadas es una buena forma de examinar y entender el flujo de ejecución de una aplicación.
Puede hacer doble clic en una línea de código para ver ese código fuente. De este modo, que también cambia el ámbito actual bajo inspección por parte del depurador. Esta acción no hace avanzar 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 hasta el cursor y examinar el código fuente. Para obtener más información, vea Cómo: Examinar la pila de llamadas.
La opción Pila de llamadas puede ayudarle a comprender el flujo de ejecución de la aplicación, ya que muestra el orden en el que se llama a los métodos y las funciones.
Mientras el depurador está en pausa en el bucle
for
, examine la ventana Pila de llamadas, que se abre de forma predeterminada en el panel inferior derecho del editor de código.Si la ventana Pila de llamadas está cerrada, presione Ctrl+D, C, o elija Depurar>Ventanas>Pila de llamadas en la barra de menú.
En la ventana Pila de llamadas, ve el puntero amarillo en el método
Main
actual.Presione F11 varias veces hasta que vea que el depurador se detiene en el método
SendMessage
.La línea superior de la ventana Pila de llamadas muestra la función actual, que es el método
SendMessage
. En la segunda línea se muestra que se ha llamado al métodoSendMessage
desde el métodoMain
.Nota:
La ventana Pila de llamadas es similar a la perspectiva de depuración de algunos IDE, como Eclipse.
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. Esta acción no hace avanzar 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, hacer avanzar el depurador mediante la función Ejecutar hasta el cursor o ir al código fuente.
Para más información sobre la ventana Pila de llamadas, consulte Examen de la pila de llamadas.
Cambio del flujo de ejecución
Presione F11 dos veces para ejecutar el método
Console.WriteLine
.Con el depurador en pausa en la llamada de método
SendMessage
, use el mouse para capturar la flecha amarilla o el puntero de ejecución (a la izquierda) y arrastre el puntero una línea hacia arriba hasta la instrucciónConsole.WriteLine
.Presione F11.
El depurador volverá a ejecutar el método
Console.WriteLine
(verá esta acción en la salida de la ventana de la consola).Al cambiar el flujo de ejecución, puede, por ejemplo, comprobar las diferentes rutas de ejecución de código o volver a ejecutar código sin tener que reiniciar el depurador.
Advertencia
A menudo es necesario tener cuidado con esta característica, ya que puede ser que vea una advertencia en la información en pantalla. También puede ser que reciba otras advertencias. El hecho de mover el puntero no permite revertir la aplicación a un estado anterior.
Presione F5 para seguir ejecutando la aplicación.
Enhorabuena por completar este tutorial.
Puede mover el puntero de ejecución para cambiar el flujo de la aplicación durante la depuración.
Con el depurador en pausa en la llamada de método
SendMessage
del buclefor
, seleccione F11 tres veces para depurar paso a paso por instrucciones el métodoSendMessage
y avanzar más allá del métodoConsole.WriteLine
después de ejecutarlo.El depurador ahora se pausa en la llave de cierre final del método
SendMessage
.Use el mouse para capturar la flecha amarilla o el puntero de ejecución (en el margen izquierdo) y, luego, arrastre el puntero una línea hacia arriba.
El depurador vuelve ahora a la instrucción
Console.WriteLine
.Presione F11.
El depurador vuelve a ejecutar el método
Console.WriteLine
y ve una línea duplicada en la salida de la ventana de la consola.Presione F5 para seguir ejecutando la aplicación.
Al cambiar el flujo de ejecución, puede, por ejemplo, comprobar las diferentes rutas de ejecución de código o volver a ejecutar código sin tener que reiniciar el depurador.
Advertencia
Use esta característica con cuidado. Verá una advertencia en la información sobre herramientas del puntero de ejecución sobre la posibilidad de consecuencias no deseadas. También puede que reciba otras advertencias. Mover el puntero no permite revertir la aplicación a un estado anterior.
Para más información sobre cómo cambiar el flujo de ejecución, consulte Mover el puntero para cambiar el flujo de ejecución.
Enhorabuena por completar este tutorial.
Pasos siguientes
En este tutorial, ha aprendido a iniciar el depurador, a ejecutar el código paso a paso y a inspeccionar variables. Puede ser que le interese analizar las características del depurador con más detenimiento, así como consultar los vínculos disponibles con más información.