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


Обзор отладчика Visual Studio

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

Описанные здесь функции применимы к C#, C++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (за исключением указанных).

Установка точки останова и запуск отладчика

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

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

  • Нажмите F5 (Отладка Начать отладку), что является наиболее распространенным методом.

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

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

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

Нажмите F5 (Отладка Начать отладку) или кнопку Начать отладку на панели инструментов отладки, и отладчик остановится на первой точке останова, с которой он сталкивается. Если приложение еще не запущено, F5 запускает отладчик и останавливается в первой точке останова.

Редактирование динамического кода

Visual Studio 2022 поддерживает редактирование динамического кода при отладке. Подробные сведения см. в статье:

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

Чтобы запустить приложение с присоединенным отладчиком, нажмите клавишу F11 (Отладка Шаг внутрь). F11 — это команда шаг внутрь и продвигает выполнение приложения по одной инструкции за раз. При запуске приложения с F11 отладчик прерывается на первой выполняемой команде.

шаг F11 вшаг F11 в

Желтая стрелка представляет инструкцию, на которой отладчик приостановился, что также приостанавливает выполнение приложения в этой же точке (эта инструкция еще не выполнена).

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

Заметка

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

Заметка

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

Шагнуть по коду, чтобы пропустить функции

Если вы находитесь на строке кода, которая является вызовом функции или метода, можно нажать клавишу F10 (Отладка Шаг с обходом) вместо F11.

F10 перемещает отладчик без перехода к функциям или методам в коде приложения (код по-прежнему выполняется). Нажмите F10, чтобы пропустить код, который вам не нужен. Таким образом, вы можете быстро получить код, который вас интересует. Для получения дополнительной информации об использовании команд шага см. Навигация по коду в отладчике.

Перемещение отладчика из текущей функции

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

Нажмите Shift + F11 (или выйти из шага отладки).

Эта команда возобновляет выполнение приложения (и перемещает отладчик) до тех пор, пока текущая функция не возвращается.

Перейдите к точке в коде быстро с помощью мыши

Использование кнопки "Run to Click" аналогично установке временной точки останова. Эта команда также удобна для быстрого перемещения в пределах видимой области кода приложения. Вы можете использовать Run to Click в любом открытом файле. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Запуск в определенном расположении кода.

В отладчике наведите указатель мыши на строку кода, пока справа не отобразится кнопка Run to Click (Выполнить до этой строки) Снимок экрана кнопки .

Screenshot отладчика Visual Studio, отображающего кнопку

В отладчике наведите указатель мыши на строку кода, пока не появится кнопка Run to Click (Выполнить до этой точки) Скриншот кнопки слева.

Снимок экрана отладчика Visual Studio, на котором показана кнопка

Заметка

Кнопка Run to Click (Запуск выполнения здесь) доступна начиная с Visual Studio 2017 года.

Нажмите кнопку Запустить до указанной точки (выполнить выполнение до этого места). Отладчик переходит к строке кода, в которой вы щелкали.

Запуск на курсор

При редактировании кода (а не в состоянии паузы в отладчике) щелкните правой кнопкой мыши строку кода в приложении и выберите команду "Запустить до курсора" (или нажмите клавиши CTRL). Эта команда запускает отладку и задает временную точку останова в текущей строке кода. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Запуск в определенном расположении кода.

Снимок экрана, показывающий параметр "Выполнить до курсора". Выполнить до курсора

Запустить до курсораЗапустить до курсора

Если вы задаёте точки останова, отладчик приостанавливается на первой точке останова, на которую он попадает.

Нажимайте F5, пока не дойдете до строки кода, где выбрано Выполнить до курсора.

Эта команда полезна при редактировании кода и требуется быстро задать временную точку останова и запустить отладчик одновременно.

Заметка

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

Быстро перезапустите приложение

Нажмите кнопку перезапуска приложения на панели инструментов отладки (или нажмите Restart AppRestart AppCtrl + Shift + F5).

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

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

Инспектирование переменных с помощью подсказок

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

При приостановке в отладчике наведите указатель мыши на объект и увидите его значение или значение свойства по умолчанию.

просмотреть подсказку по даннымпросмотреть подсказку по данным

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

Часто при отладке требуется быстрый способ проверить значения свойств на объектах, а советы по данным — это хороший способ.

Проверка переменных с помощью окон "Авто" и "Локальные"

В окне Autos отображаются переменные вместе с их текущими значениями и типами. В окне Авто отображаются все переменные, используемые в текущей строке или предыдущей строке (В C++, окно отображает переменные в предыдущих трех строках кода. Ознакомьтесь с документацией для поведения, специфичного для языка). Дополнительные сведения об использовании этих окон см. в разделе Проверка переменных в окнах "Авто" и "Локальные".

Во время отладки обратите внимание на окно Автопеременные в нижней части редактора кода.

Снимок экрана: окно "Автозапуск".Окно автозапуска

окно автоматических процессовокно автоматических процессов

Заметка

В JavaScript окно локальных поддерживается, но не окно автоматических переменных.

Затем просмотрите окно Локальные. Окно "Локальные" показывает переменные, находящиеся в области видимости в данный момент.

Снимок экрана: окно "Локальные"Окно "Локальные"

окно Локальныеокно Локальные

В этом примере объект и объект находятся в области. Дополнительные сведения см. в разделе Переменные в окнах Autos и Locals.

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

Можно использовать окно для указания переменной (или выражения), за которой вы хотите следить. Для получения подробной информации см. Установить наблюдение с помощью окон Watch и QuickWatch.

При отладке, нажав правой кнопкой на объект, выберите Добавить наблюдение.

Снимок экрана: окно "Просмотр".Окно просмотра

окно наблюдения

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

Изучите стек вызовов

В окне стека вызовов показан порядок вызова методов и функций. В верхней строке показана текущая функция. Вторая строка показывает функцию или свойство, из которое он был вызван, и т. д. Стек вызовов — это хороший способ изучить и понять поток выполнения приложения. Для получения подробной информации посмотрите Практическое руководство: изучение стека вызовов.

Заметка

Окно стека вызовов похоже на режим отладки в некоторых средах разработки, таких как Eclipse.

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

Снимок экрана, показывающий окно стека вызовов. Проверьте стек вызовов.

проверьте стек вызововпроверьте стек вызовов

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

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

Проверка исключения

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

вспомогательный средств исключенийвспомогательный средств исключений

В этом примере Помощник по исключениям отображает исключение и сообщение об ошибке, указывающее, что ссылка на объект не задана для экземпляра объекта. Он сообщает нам, что строковое значение было null при попытке вызвать метод .

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

Разверните узел параметров исключения , чтобы просмотреть дополнительные параметры по обработке этого типа исключений, но вам не нужно ничего менять для этой экскурсии!

Совет

Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время отладки исключений. Просто найдите кнопку Analyze with CopilotСкриншот кнопки Analyze with Copilot.. Дополнительные сведения см. в разделе Отладка с Copilot.

Совет

Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время отладки исключений. Просто найдите кнопку Ask CopilotСкриншот кнопки «Спросить у Копилота».. Дополнительные сведения см. в разделе Отладка с использованием Copilot.

Получение помощи по искусственному интеллекту

Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время отладки. Дополнительные сведения см. в разделе Отладка с Copilot. Во время отладки можно также найти кнопку Analyze с помощью CopilotСкриншот кнопки Analyze с помощью Copilot.. В этих сценариях Copilot уже знает контекст для ваших вопросов, поэтому вам не нужно предоставлять контекст в Copilot чате.

Получение помощи по искусственному интеллекту

Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время отладки. Дополнительные сведения см. в разделе Отладка с Copilot. При отладке можно также найти кнопку Ask CopilotСкриншот кнопки Ask Copilot.. В этих сценариях Copilot уже знает контекст для ваших вопросов, поэтому вам не нужно предоставлять контекст в Copilot чате.

Настройка отладки

Вы можете настроить сборку проекта в конфигурации Отладка или Выпуск, настроить свойства проекта для отладки, или изменить общие настройки для отладки. Кроме того, можно настроить отладчик для отображения пользовательских сведений с помощью таких функций, как атрибут DebuggerDisplay или, для C/C++, фреймворка NatVis.

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

Начиная с Visual Studio 2022, вкладка Debug для проектов .NET предоставляет ссылку на пользовательский интерфейс профилей запуска отладки, где можно задать свойства, связанные с отладкой.

Снимок экрана: свойства проекта.Свойства проекта

Начиная с Visual Studio 2022, вкладка Debug для проектов .NET предоставляет ссылку на пользовательский интерфейс профилей запуска отладки, где можно задать свойства, связанные с отладкой.

свойства проектасвойства проекта

Отладка динамических приложений #REF! в Служба приложений Azure

Сведения об отладке в Служба приложений Azure см. в разделе Приложения #REF! Debug.

Для Visual Studio Enterprise (только) средство Snapshot Debugger делает моментальный снимок ваших рабочих приложений, когда выполняется интересующий вас код. Чтобы указать отладчику создать моментальный снимок, необходимо задать точки снимков и логточки в коде. Отладчик позволяет увидеть, что произошло неправильно, не влияя на трафик рабочего приложения. Отладчик Моментальных Снимков может кардинально сократить время, необходимое для устранения проблем, возникающих в рабочих средах.

Коллекция моментальных снимков доступна для #REF! приложений, работающих в Служба приложений Azure. #REF! приложения должны работать в .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны работать в .NET Core 2.0 или более поздней версии #REF!.

Дополнительные сведения см. в разделе Отлаживание живых приложений #REF! с использованием отладчика моментальных снимков.

Просмотр моментальных снимков с помощью функции перемотки назад IntelliTrace (Visual Studio Enterprise)

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

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

Дополнительные сведения см. на странице Проверка предыдущих состояний приложений с помощью IntelliTrace.

Отладка проблем с производительностью

Если приложение выполняется слишком медленно или использует слишком много памяти, вам может потребоваться протестировать приложение с помощью средств профилирования на ранних этапах. Дополнительные сведения о средствах профилирования, таких как средство использования ЦП и анализатор памяти, см. в статье Сначала ознакомьтесь с инструментами профилирования.

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

Узнайте, как использовать точки останова