Краткое руководство. Отладка кода C++ с помощью отладчика Visual Studio

Отладчик Visual Studio реализует множество эффективных функций для отладки приложений. В этой статье вы ознакомитесь с некоторыми основными возможностями.

Создание нового проекта

  1. Откройте Visual Studio и создайте проект.

    Нажмите клавишу ESC, чтобы закрыть окно запуска. Нажмите CTRL+Q, чтобы открыть поле поиска, введите c++, выберите Шаблоны и затем Create new Console App project (Создание проекта консольного приложения). В появившемся диалоговом окне выберите Создать.

    Если шаблон проекта Консольное приложение Windows отсутствует, перейдите в меню Инструменты>Получить инструменты и компоненты..., после чего запустится Visual Studio Installer. Запускается Visual Studio Installer. Выберите рабочую нагрузку Разработка классических приложений на C++, а затем нажмите Изменить.

    Visual Studio создаст проект.

  2. В файле MyDbgApp.cpp замените следующий код

    int main()
    {
        return 0;
    }
    

    следующим кодом (не удаляйте #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();
    }
    

Установка точки останова

Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти, либо выполнение ветви кода. Эта возможность чаще всего используется при отладке.

  1. Чтобы задать точку останова, щелкните в области слева от вызова функции doWork (или выберите строку кода и нажмите клавишу F9).

    Set a breakpoint

  2. Нажмите клавишу F5 (или выберите Отладка > Начать отладку).

    Hit a breakpoint

    Отладчик приостановит выполнение в заданной точке останова. Инструкция, в которой отладчик приостановил выполнение приложения, обозначается желтой стрелкой. Строка, содержащая вызов функции doWork, пока еще не выполнена.

    Совет

    При наличии точки останова в цикле или рекурсии либо большого числа точек останова, которые вы часто будете просматривать пошагово, используйте условную точку останова, которая позволяет приостанавливать код только при выполнении определенных условий. Использование условных точек останова позволяет сэкономить время и упростить отладку проблем, которые сложно воспроизвести.

    При отладке связанных с памятью сбоев в C++ вы также можете использовать точки останова для проверки значений адресов (для поиска значений NULL) и числа ссылок.

Чтобы продолжить работу отладчика, можно использовать различные команды. Здесь описываются полезные новые команды для навигации по коду, доступные с версии Visual Studio 2017.

При приостановке в точке останова наведите указатель мыши на инструкциюc1.push_back(20), пока не появится зеленая кнопкаRun to Click"Запустить", а затем нажмите кнопку "Выполнить", чтобы нажать кнопку.

Run to click

Выполнение приложения продолжится путем вызова doWork и будет приостановлено в той строке, в которой вы нажмете эту кнопку.

В процессе пошагового выполнения кода обычно используются клавиши F10 и F11. Более подробные инструкции см. в статье Знакомство с отладчиком Visual Studio.

Проверка переменных в подсказке по данным

  1. В текущей строке кода, отмеченной желтым указателем выполнения, наведите указатель мыши на объект c1, чтобы просмотреть подсказку по данным.

    View a datatip

    Подсказка по данным содержит текущее значение переменной c1 и позволяет проверить ее свойства. Если во время отладки отображается значение, которое вы не ожидали увидеть, возможно, в предыдущей или вызывающей строке кода имеется ошибка.

  2. Разверните подсказку по данным, чтобы просмотреть текущие значения свойств объекта c1.

  3. Чтобы закрепить подсказку по данным и иметь возможность постоянно просматривать значение переменной c1 во время выполнения, щелкните небольшой значок булавки. (При необходимости вы можете переместить закрепленную подсказку по данным в удобное положение.)

Изменение кода и продолжение отладки

Вы можете сделать это во время сеанса отладки, если вам потребуется внести изменения в код.

  1. Щелкните второй экземпляр c2.front() и измените c2.front() на c2.back().

  2. Нажмите клавишу F10 (или выберите команду Отладка > Шаг с обходом) несколько раз, чтобы пройти вперед и выполнить измененный код.

    Edit and continue

    При нажатии клавиши F10 отладчик каждый раз переходит вперед на одну инструкцию, однако при этом минует функции, не заходя в них (пропускаемый код в таком случае по-прежнему выполняется).

Дополнительные сведения об этом режиме и его ограничениях см. в статье Изменить и продолжить.

Следующие шаги

В этом руководстве вы узнали, как запускать отладчик, осуществлять пошаговое выполнение кода и проверять переменные. Возможно, вы захотите получить более полное представление о функциях отладчика, а также воспользоваться ссылками на дополнительные сведения.