Inicio rápido: Depurar con C++ mediante el depurador de Visual Studio

El depurador de Visual Studio proporciona muchas características de gran eficacia para ayudar a depurar aplicaciones. En este tema se proporciona una forma rápida de obtener información sobre las características básicas.

Creación de un nuevo proyecto

  1. Abra Visual Studio y cree un proyecto.

    Presione Esc para cerrar la ventana de inicio. Presione Ctrl + Q para abrir el cuadro de búsqueda, escriba c++, elija Plantillas y luego, Crear proyecto de aplicación de consola. En el cuadro de diálogo que se abre, elija Crear.

    Si no ve la plantilla de proyecto Aplicación de consola Windows, vaya a Herramientas>Obtener herramientas y características… y se abrirá el Instalador de Visual Studio. Se iniciará el Instalador de Visual Studio. Seleccione la carga de trabajo Desarrollo para el escritorio con C++ y, luego, elija Modificar.

    Visual Studio crea el proyecto.

  2. En MyDbgApp.cpp, reemplace el código siguiente

    int main()
    {
        return 0;
    }
    

    con este código (no quite #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

Establecer un punto de interrupción

Un punto de interrupción es un marcador que indica en qué punto debe Visual Studio suspender la ejecución de código para poder echar un vistazo a los valores de variables, o al comportamiento de memoria, o si se está ejecutando o no una rama de código. Es la característica más básica de la depuración.

  1. Para establecer el punto de interrupción, haga clic en el medianil de la izquierda de la llamada a la función doWork (o seleccione la línea de código y presione F9).

    Set a breakpoint

  2. Ahora presione F5 (o elija Depurar > Iniciar depuración).

    Hit a breakpoint

    El depurador se detiene donde se ha establecido el punto de interrupción. La instrucción donde se ha detenido la ejecución del depurador y la aplicación se indica mediante la flecha amarilla. La línea con la llamada a la función doWork aún no se ha ejecutado.

    Sugerencia

    Si tiene un punto de interrupción en un bucle o recursión, o si tiene muchos puntos de interrupción que ejecuta paso a paso con frecuencia, use un punto de interrupción condicional para asegurarse de que el código se suspende ÚNICAMENTE cuando se cumplen determinadas condiciones. Un punto de interrupción condicional ahorra tiempo y además puede facilitar la depuración de problemas que son difíciles de reproducir.

    Al intentar depurar errores relacionados con la memoria en C++, también puede usar puntos de interrupción para inspeccionar valores de dirección (busque NULL) y números de referencia.

Hay distintos comandos para indicar al depurador que continúe. Aquí se muestra un comando de navegación de código muy útil disponible a partir de Visual Studio 2017.

Mientras la ejecución está detenida en el punto de interrupción, mantenga el puntero sobre la instrucción c1.push_back(20) hasta que aparezca el botón verde Ejecutar hasta clicRun to Click y, luego, presione el botón Ejecutar hasta clic.

Run to click

La aplicación se sigue ejecutando, llama a doWork y se detiene en la línea de código donde se ha hecho clic en el botón.

Los comandos de teclado habituales usados para ejecutar el código paso a paso son F10 y F11. Para obtener instrucciones más detalladas, vea Primer vistazo al depurador.

Inspeccionar las variables de una información sobre datos

  1. En la línea de código actual (marcada con el puntero de ejecución amarillo), mantenga el puntero sobre el objeto c1 para mostrar una información sobre datos.

    View a datatip

    La información sobre datos muestra el valor actual de la variable c1 y permite inspeccionar sus propiedades. Al depurar, si ve un valor que no esperaba, probablemente tenga un error en las líneas de código anteriores o de llamada.

  2. Expanda la información sobre datos para ver los valores de propiedad actuales del objeto c1.

  3. Si quiere anclar la información sobre datos para poder seguir viendo el valor de c1 mientras ejecuta el código, haga clic en el icono de anclar pequeño. (Puede mover la información sobre datos anclada a una ubicación que le resulte cómoda).

Editar código y seguir depurando

Si identifica un cambio que quiere probar en el código a mitad de una sesión de depuración, también puede hacerlo.

  1. Haga clic en la segunda instancia de c2.front() y cambie c2.front() por c2.back().

  2. Presione F10 (o Depurar > Saltar) varias veces para que el depurador avance y ejecute el código editado.

    Edit and continue

    F10 hace que el depurador avance de instrucción en instrucción, pero que se salte las funciones en lugar de depurarlas (el código que se omite se sigue ejecutando).

Para obtener más información sobre el uso de Editar y continuar y las limitaciones de las características, vea Editar y continuar.

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.