Поделиться через


Быстрое начало: отладка программ на C++ с использованием отладчика Visual Studio

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

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

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

    Если окно "Пуск" еще не открыто, выберите "Окно запуска файла>". В окне "Пуск" выберите Создать проект. В поле поиска введите "Пустой проект", а затем выберите шаблон пустого проекта C++ .

    Если шаблон проекта не отображается, откройте Visual Studio Installer. Выберите нагрузку на рабочую станцию с разработкой на C++, затем выберите Изменить.

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

    Создание исходного файла с именем MyDbgApp.cpp

  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).

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

  2. Теперь нажмите клавишу F5 (или нажмите кнопку "Начать > отладку").

    Попадание в точку останова

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

    Подсказка

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

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

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

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

Запуск по щелчку

Приложение продолжает выполняться, вызывая doWork, и приостанавливается на строке кода, на которой вы нажали кнопку.

Распространенные команды клавиатуры, используемые для пошагового выполнения кода, включают F10 и F11. Дополнительные подробные инструкции см. в статье "Первый взгляд на отладчик".

Проверка переменных в дататипе

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

    Просмотр подсказки данных

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

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

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

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

Если вы определите изменение, которое вы хотите протестировать в коде в середине сеанса отладки, это также можно сделать.

  1. Щелкните на второе вхождение c2.front() и измените c2.front() на c2.back().

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

    Редактировать и продолжить

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

Дополнительные сведения об использовании правки и продолжения и ограничений функций см. в разделе "Изменить и продолжить".

Дальнейшие действия

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