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


Переход по коду с помощью отладчика Visual Studio

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

Замечание

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

Запуск отладки и ввод режима останова

Некоторые команды навигации запускают приложение и автоматически присоединяют отладчик. Приложение приостанавливается на определенной строке кода на основе команды, используемой для запуска навигации, и вы вводите режим останова (то есть приложение приостановлено в отладчике).

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

Команды пошагового выполнения кода можно использовать для запуска приложения, но чаще используются после ввода режима останова.

Некоторые команды навигации в основном используются в режиме останова (то есть при приостановке работы отладчика).

Режим отладки и останова

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

Большинство окон отладчика, таких как модули и окна наблюдения , доступны только в том случае, если отладчик подключен к приложению. Некоторые функции отладчика, такие как просмотр значений переменных в окне "Локальные " или вычисление выражений в окне "Контрольные значения", доступны только в том случае, если отладчик приостановлен (то есть в режиме останова).

Замечание

Если в коде нет загруженных исходных или символьных файлов (PDB), отладчик отображает страницу "Исходные файлы не найдено " или " Символы не найдено ", которая поможет вам найти и загрузить файлы. См. Укажите символы (.pdb) и файлы исходного кода. Если вы не можете загрузить файлы символов или исходных файлов, можно выполнить отладку инструкций по сборке в окне дизассембли.

Пошаговое выполнение кода

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

Шаг в код

Чтобы остановиться на каждой инструкции при отладке, используйте Отладка>Шаг с заходом, или выберите F11.

Отладчик выполняет шаги с помощью инструкций кода, а не физических строк. Например, if предложение может быть записано в одной строке:

int x = 42;
string s = "Not answered";
if( int x == 42) s = "Answered!";

Но при переходе к этой строке отладчик обрабатывает условие как один шаг и следствие как другое. В предыдущем примере условие истинно.

При вызове вложенной функции шаг В перемещается внутрь наиболее глубоко вложенной функции. Например, если вы используете Шаг внутрь на вызове Func1(Func2()), отладчик переходит в функцию Func2.

Подсказка

При выполнении каждой строки кода можно навести указатель мыши на переменные, чтобы увидеть их значения, или использовать окна "Локальные" и "Контрольные " для просмотра изменений значений. Вы также можете визуально отслеживать стек вызовов при переходе в функции. (Только для Visual Studio Enterprise, см. как отображаются методы в стеке вызовов при отладке.)

Пошаговое выполнение кода и пропуск некоторых функций

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

Команда клавиатуры Команда меню отладки Описание
F10 Шаг через Если текущая строка содержит вызов функции, step Over запускает код, а затем приостанавливает выполнение в первой строке кода после возврата вызываемой функции.
Сдвиг+F11 выйти Шаг Out продолжает выполнять код и приостанавливает выполнение при возврате текущей функции. Отладчик пропускает текущую функцию.

Переход к определенному расположению или функции

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

  • Лучше установить точку остановки, если вы думаете, что возможно захотите использовать её повторно.
  • Другие методы предназначены для удобства и аналогичны настройке временной точки останова.

Перейти к точке останова в коде

Чтобы задать простую точку останова в коде, выберите левое поле рядом со строкой кода, в которой требуется приостановить выполнение. Можно также выбрать строку, а затем выбрать F9, выбрать Отладка>Переключить точку останова или щелкнуть правой кнопкой мыши и выбрать Точка останова>Вставить точку останова. Точка останова отображается как красная точка в левом поле рядом с строкой кода. Отладчик приостанавливает выполнение непосредственно перед выполнением этой строки.

Снимок экрана, на котором показано, как задать точку останова.

Снимок экрана, на котором показано, как задать точку останова.

Точки останова в Visual Studio предоставляют широкий набор функциональных возможностей, таких как условные точки останова и точки трассировки. Дополнительные сведения см. в разделе "Использование точек останова".

Выполнить до точки останова функции

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

Чтобы указать точку останова функции по имени:

  1. Выберите Отладка>Новая точка останова>Точка останова функции.

  2. В диалоговом окне "Новая точка останова функции " введите имя функции и выберите его язык:

    Снимок экрана: диалоговое окно

    Снимок экрана: диалоговое окно

  3. Нажмите ОК.

Если функция перегружена или в нескольких пространствах имен, можно выбрать нужную функцию в окне точек останова :

Скриншот, показывающий окно точек останова.

Скриншот, показывающий окно точек останова.

Чтобы выбрать точку останова функции в стеке вызовов, выполните следующие действия.

  1. При отладке откройте окно стека вызовов, выбрав "Отладка>стека вызовов>".

  2. В окне стека вызовов щелкните правой кнопкой мыши функцию и выберите команду "Запустить к курсору" или нажмите клавиши CTRL+F10.

Сведения о визуальной трассировке стека вызовов можно найти в разделе "Сопоставление методов на стеке вызовов во время отладки".

Переместить к расположению курсора

Чтобы выполнить переход к расположению курсора, в исходном коде или окне стека вызовов выберите строку, на которой хотите остановиться, щелкните правой кнопкой и выберите "Запустить к курсору", или нажмите Ctrl+F10. Выбор функции "Выполнить до курсора" аналогичен настройке временной точки останова.

Принудительный переход к расположению курсора

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

Запуск для щелчка

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

Снимок экрана, показывающий функцию

Принудительный запуск для выполнения щелчка

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

Снимок экрана, показывающий функцию

Замечание

Force Run to Click доступен начиная с Visual Studio 2022.

Разрыв кода вручную

Чтобы перейти к следующей доступной строке кода в работающем приложении, выберите Отладка>Остановить все или нажмите комбинацию клавиш Ctrl+Alt+Break.

Отладка кода, отличного от пользователя

По умолчанию отладчик пытается выполнить отладку только кода приложения, включив параметр Just My Code. Дополнительные сведения о том, как эта функция работает для различных типов проектов и языков, а также о том, как ее можно настроить, см. в разделе "Только мой код".

Чтобы просмотреть код платформы, сторонний код библиотеки или системные вызовы при отладке, можно отключить только мой код. В Инструменты (или Отладка) >Параметры>Отладка снимите флажок «Включить только мой код». Если "Just My Code" отключен, непользовательский код отображается в окнах отладчика, и отладчик может переходить в непользовательский код.

Замечание

Функция "Just My Code" не поддерживается для проектов устройств.

Отладка системного кода

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

Начиная с Visual Studio 2022 версии 17.7, можно автоматически выполнить компиляцию кода .NET при переходе во внешний код без необходимости вручную загружать символы отладки. Дополнительные сведения см. в статье Создание исходного кода из сборок .NET при отладке.

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

Чтобы загрузить символы для определенного системного компонента, выполните следующие действия.

  1. Во время отладки откройте окно "Модули", выбрав "Отладка>модулей>" или нажав клавиши CTRL+ALT+U.

  2. В окне "Модули" можно указать, какие модули имеют символы, загруженные в столбец "Состояние символов ". Щелкните правой кнопкой мыши модуль, для которого нужно загрузить символы, а затем выберите "Загрузить символы".

Пошаговое изучение свойств и методов в управляемом коде

Отладчик по умолчанию пропускает свойства и операторы в управляемом коде. В большинстве случаев это поведение обеспечивает более эффективную отладку. Чтобы включить переход в свойства или операторы, выберите Отладка>Опции. На странице Отладка>Общие снимите флажок Пропускать свойства и операторы (только для управляемого кода).

Перемещение указателя для изменения потока выполнения

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

Это расширенная функция отладчика. Дополнительные сведения см. в разделе "Перемещение указателя выполнения".