Сначала ознакомьтесь с отладчиком Visual Studio
В этом разделе представлены средства отладчика, предоставляемые Visual Studio. В контексте Visual Studio отладка вашего приложенияобычно означает, что приложение запускается с подключенным отладчиком (то есть в режиме отладчика). При этом отладчик предоставляет множество способов увидеть, что делает ваш код во время выполнения. Вы можете выполнить шаги по коду и просмотреть значения, хранящиеся в переменных, вы можете настроить контроль над переменными, чтобы увидеть, когда изменяются значения, можно проверить путь выполнения кода и т. д. Если это первый раз, когда вы попытались выполнить отладку кода, вы можете прочитать отладку для абсолютных начинающих, прежде чем перейти к этому разделу. Если вы пытаетесь выполнить конкретную задачу и нужно знать, какую функцию использовать, см. средство поиска функций отладчика. Сведения об отладке с помощью ИИ см. в разделе Отладка с помощью Copilot.
Описанные здесь функции применимы к C#, C++, Visual Basic, JavaScript и другим языкам, поддерживаемым Visual Studio (за исключением отмеченных).
Установка точки останова и запуск отладчика
Точки останова — это полезная функция, когда вы знаете строку кода или раздел кода, который необходимо подробно изучить во время выполнения. Дополнительные сведения о различных типах точек останова, таких как условные точки останова и точки останова функций, см. в разделе Использование точек останова.
Чтобы выполнить отладку, необходимо запустить приложение с отладчиком, подключенным к процессу приложения. Для этого выполните указанные ниже действия.
- Нажмите F5 (Отладка > Начать отладку), что является наиболее распространенным методом.
Однако сейчас вы не можете задать точки останова для проверки кода приложения, поэтому сначала мы будем делать это, а затем начать отладку. Точки останова — это самая базовая и важная функция надежной отладки. Точка останова указывает, где Visual Studio должна приостановить выполнение вашего кода, чтобы вы могли просмотреть значения переменных, поведение памяти или выполняется ли определенная ветвь кода.
Если у вас есть файл, открытый в редакторе кода, можно задать точку останова, щелкнув поле слева от строки кода.
Нажмите F5 (> Отладкаотладки) или кнопку Начать отладку на панели инструментов отладки, а отладчик запускается в первую точку останова, с которой она сталкивается. Если приложение еще не запущено, F5 запускает отладчик и останавливается в первой точке останова.
Перемещайтесь по коду в отладчике с помощью пошаговых команд
Мы предоставляем сочетания клавиш для большинства команд, так как они упрощают навигацию по коду приложения. (Эквивалентные команды, такие как команды меню, отображаются в скобках.) Дополнительные сведения об использовании команд пошагового выполнения см. в Навигирование по коду в отладчике.
Чтобы запустить приложение с присоединенным отладчиком, нажмите клавишу F11 (Отладка > Шаг внутрь). F11 — это команда шаг внутрь и продвигает выполнение приложения по одной инструкции за раз. При запуске приложения с F11 отладчик прерывается на первой выполняемой команде.
Желтая стрелка обозначает инструкцию, на которой отладчик приостанавливается, что также останавливает выполнение приложения в этой же точке (эта инструкция еще не была выполнена).
F11 — это хороший способ изучения потока выполнения в наиболее подробной форме. (Чтобы ускорить переход по коду, мы также показываем другие варианты.) По умолчанию отладчик пропускает код, отличный от пользователя (если требуется дополнительные сведения, см. "Просто мой код").
Заметка
В управляемом коде появится диалоговое окно с запросом, следует ли получать уведомления при автоматическом переходе по свойствам и операторам (поведение по умолчанию). Если вы хотите изменить этот параметр позже, в меню "Средства" под разделом >отключите настройку "Переход по свойствам и операторам" в "Параметры".
Шагнуть по коду, чтобы пропустить функции
Если вы находитесь на строке кода, которая является вызовом функции или метода, можно нажать клавишу F10 (Отладка > Шаг с обходом) вместо F11.
F10 перемещает отладчик без перехода к функциям или методам в коде приложения (код по-прежнему выполняется). Нажмите F10, чтобы пропустить код, который вам не нужен. Таким образом, вы можете быстро получить код, который вас интересует. Для получения дополнительной информации об использовании команд шага см. Навигация по коду в отладчике.
Перейдите к точке в коде быстро с помощью мыши
Использование кнопки "Run to Click" аналогично установке временной точки останова. Эта команда также удобна для быстрого перемещения в пределах видимой области кода приложения. Вы можете использовать Run to Click в любом открытом файле. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Запуск в определенном расположении кода.
Пока вы находитесь в отладчике, наведите указатель мыши на строку кода, пока не появится кнопка "Запуск до нажатия" (выполнить до этой точки) . отображается слева.
Заметка
Кнопка запуска для нажатия (запуск выполнения здесь) доступна начиная с Visual Studio 2017.
Нажмите кнопку Выполнить, чтобы щелкнуть (выполнить выполнение здесь). Отладчик переходит к строке кода, в которой вы щелкали.
Перемещение отладчика из текущей функции
Иногда может потребоваться продолжить сеанс отладки и продвинуть отладчик через всю текущую функцию.
Нажмите клавиши SHIFT + F11 (или отладка > шаг).
Эта команда возобновляет выполнение приложения (и перемещает отладчик) до тех пор, пока текущая функция не возвращается.
Запуск на курсор
При редактировании кода (а не прерываете выполнение в режиме отладки), щелкните правой кнопкой мыши строку кода в приложении и выберите Запустить до курсора (или нажмите клавиши Ctrl + F10). Эта команда запускает отладку и задает временную точку останова в текущей строке кода. Дополнительные сведения об этой функции и аналогичных функциях навигации см. в разделе Запуск в определенном расположении кода.
Если вы установили точки останова, отладчик приостанавливается на первой точке, на которую он наткнется.
Нажимайте F5, пока не дойдете до строки кода, где выбрано Выполнить до курсора.
Эта команда полезна при редактировании кода и требуется быстро задать временную точку останова и запустить отладчик одновременно.
Заметка
Во время отладки можно использовать Запуск до курсора в окне стека вызовов.
Быстро перезапустите приложение
Нажмите кнопку Перезапустить на панели инструментов отладки (или нажмите клавиши Ctrl+Shift+F5, чтобы перезапустить).
При нажатии Перезапуститьэто экономит время по сравнению с остановкой приложения и перезапуском отладчика. Отладчик приостанавливается на первом брейкпоинте, в который попадает выполняемый код.
Если вы хотите остановить отладчик и вернуться в редактор кода, нажмите красную кнопку остановки вместо перезапустить.
Редактирование динамического кода
Visual Studio 2022 поддерживает редактирование динамического кода во время отладки. Подробные сведения см. в статье:
Изменение кода и продолжение отладки (C#, VB, C++, XAML)
На большинстве языков, поддерживаемых Visual Studio, можно изменить код в середине сеанса отладки и продолжить отладку. Чтобы использовать эту функцию, щелкните курсором по коду во время паузы в отладчике, внесите изменения и нажмите клавишу F5 , F10 или F11 для продолжения отладки. Дополнительные сведения об использовании этой функции и ограничениях функций см. в разделе "Изменить и продолжить".
Сведения об изменении кода XAML во время сеанса отладки см. статью Создание и отладка исполняемого кода XAML в режиме горячей замены XAML.
Инспектирование переменных с помощью подсказок
Теперь, когда вы немного разобрались, у вас есть хорошая возможность начать изучать состояние вашего приложения и проверять переменные с помощью отладчика. Функции, которые позволяют проверять переменные, являются одними из наиболее полезных функций отладчика, и существуют различные способы его выполнения. Часто при попытке отладки проблемы вы пытаетесь выяснить, хранят ли переменные значения, которые они ожидают, в определенном состоянии приложения. Подробные сведения об использовании подсказок см. в разделе Просмотр значений данных в подсказках.
При приостановке в отладчике наведите указатель мыши на объект и увидите его значение или значение свойства по умолчанию.
Если переменная имеет свойства, можно развернуть объект, чтобы просмотреть все его свойства.
Часто при отладке требуется быстрый способ проверить значения свойств на объектах, а советы по данным — это хороший способ.
Проверка переменных с помощью окон "Авто" и "Локальные"
В окне Autos отображаются переменные вместе с их текущими значениями и типами. В окне Авто отображаются все переменные, используемые в текущей строке или предыдущей строке (В C++, окно отображает переменные в предыдущих трех строках кода. Ознакомьтесь с документацией для поведения, специфичного для языка). Дополнительные сведения об использовании этих окон см. в разделе Проверка переменных в окнах "Авто" и "Локальные".
Во время отладки обратите внимание на окно Автопеременные в нижней части редактора кода.
Заметка
В JavaScript окно локальных поддерживается, но не окно автоматических переменных.
Затем просмотрите окно Локальные. Окно "Локальные" показывает переменные, находящиеся в области видимости в данный момент.
В этом примере объект this
и объект f
находятся в области. Дополнительные сведения см. в разделе Проверка переменных в окнах"Авто" и "Локальные".
Просмотр возвращаемых значений вызовов методов
В коде .NET и C++ можно проверить возвращаемые значения в окне автозапуска при переходе или выходе из вызова метода, что может быть полезно, если возвращаемое значение не хранится в локальной переменной. Дополнительные сведения см. в разделе Просмотр возвращаемых значений вызовов методов.
Начиная с Visual Studio 2022 версии 17.12 Preview 3, можно также просматривать встроенные значения вызовов методов, а не только в окне автозапуска.
С включенным Copilot вы также можете получить целевую помощь, связанную с встроенным возвращаемым значением, с помощью кнопки "Ask Copilot", которая отображается в подсказке данных для возвращаемого значения.
Установка часов
Можно использовать окно для указания переменной (или выражения), за которой вы хотите следить. Для получения подробной информации см. "Настройка элементов наблюдения в окнах 'Watch' и 'QuickWatch'".
При отладке, нажав правой кнопкой на объект, выберите Добавить наблюдение.
окно наблюдения
окно наблюдения
В этом примере у вас есть наблюдение за объектом, и вы можете видеть изменение его значения, перемещаясь через отладчик. В отличие от других окон переменных, окна наблюдения всегда отображают переменные, которые вы отслеживаете (они становятся неактивными, если переменные выходят из области видимости).
Проверка стека вызовов
В окне стека вызовов показан порядок вызова методов и функций. В верхней строке показана текущая функция. Вторая строка показывает функцию или свойство, из которое он был вызван, и т. д. Стек вызовов — это хороший способ изучить и понять поток выполнения приложения. Для получения подробной информации посмотрите Практическое руководство: изучение стека вызовов.
Заметка
Окно стека вызовов похоже на режим отладки в некоторых средах разработки, таких как Eclipse.
Щелкните окно стека вызовов во время отладки, которое по умолчанию открыто в правой нижней области.
Вы можете дважды щелкнуть строку кода, чтобы просмотреть этот исходный код, а также изменить текущую область, проверяемую отладчиком. Это не продвигает отладчик.
Вы также можете использовать контекстные меню, вызываемые правым щелчком мыши в окне стек вызовов для выполнения других действий. Например, можно вставить точки останова в определенные функции, перезапустить приложение с помощью запустить на курсори изучить исходный код.
Проверка исключения
Когда ваше приложение выбрасывает исключение, отладчик переносит вас на строку кода, которая вызвала исключение. Подробные сведения см. в Обзор исключения с помощью вспомогательной программы Exception Helper.
В этом примере помощник по исключениям показывает исключение System.NullReferenceException
и сообщение об ошибке, указывающее, что ссылка на объект не задана для экземпляра объекта. Он сообщает нам, что строковое значение было null при попытке вызвать метод Trim
.
В этом примере помощник исключений показывает вам исключение System.Argument
и сообщение об ошибке, которое гласит, что путь имеет неверный формат. Таким образом, мы знаем, что ошибка произошла в аргументе метода или функции.
В этом примере вызов DirectoryInfo
привел к ошибке из-за пустой строки, хранящейся в переменной value
.
Вспомогательный компонент исключения — это отличная функция, которая может помочь в отладке ошибок. Вы также можете выполнять такие действия, как просмотр сведений об ошибке и добавление контрольных сведений из вспомогательной службы исключений. При необходимости можно изменить условия для создания конкретного исключения. Дополнительные сведения об обработке исключений в коде см. в методах отладки и средствах.
Разверните узел параметров исключения , чтобы просмотреть дополнительные параметры по обработке этого типа исключений, но вам не нужно ничего менять для этой экскурсии!
Совет
Если у вас есть Copilot, вы можете получить помощь с использованием искусственного интеллекта при отладке исключений. Просто найдите кнопку "Попросить Copilot". Дополнительные сведения см. в разделе Отладка с помощью Copilot.
Получение помощи по искусственному интеллекту
Если у вас есть Copilot, вы можете получить помощь по искусственному интеллекту во время отладки. Дополнительные сведения см. в разделе Отладка с помощью Copilot. При отладке также можно найти кнопку Ask Copilot. В этих сценариях Copilot уже знает контекст для ваших вопросов, поэтому вам не нужно предоставлять контекст в чате Copilot.
Настройка отладки
Вы можете настроить проект для сборки в качестве конфигурации отладки или выпуска, настроить свойства проекта для отладки или настроить общие параметры для отладки. Кроме того, можно настроить отладчик для отображения пользовательских сведений с помощью таких функций, как атрибут DebuggerDisplay или, для C/C++, фреймворка NatVis.
Свойства отладки зависят от каждого типа проекта. Например, можно указать аргумент для передачи в приложение при запуске. Чтобы получить доступ к свойствам для конкретного проекта, щелкните проект правой кнопкой мыши в обозревателе решений и выберите Свойства. Свойства отладки обычно появляются на вкладке сборка или отладка, в зависимости от конкретного типа проекта.
Начиная с Visual Studio 2022, вкладка отладки для проектов .NET предоставляет ссылку на интерфейс профилей запуска отладки, где можно настроить свойства, связанные с процессом отладки.
Отладка динамических ASP.NET приложений в Службе приложений Azure
Сведения об отладке в Службе приложений Azure см. в статье Отладка приложений Azure.
Для (только) Visual Studio Enterprise отладчик моментальных снимков делает снимок ваших приложений в рабочей среде, когда выполняется код, который вас интересует. Чтобы указать отладчику создать моментальный снимок, необходимо задать точки снимков и логточки в коде. Отладчик позволяет увидеть, что произошло неправильно, не влияя на трафик рабочего приложения. Отладчик Моментальных Снимков может кардинально сократить время, необходимое для устранения проблем, возникающих в рабочих средах.
Коллекция моментальных снимков доступна для ASP.NET приложений, работающих в Службе приложений Azure. ASP.NET приложения должны работать в .NET Framework 4.6.1 или более поздней версии, а приложения ASP.NET Core должны работать в .NET Core 2.0 или более поздней версии в Windows.
Дополнительные сведения см. в разделе Отладка динамических ASP.NET приложений с помощьюотладчика моментальных снимков.
Просмотр моментальных снимков с помощью функции отката на шаг назад в IntelliTrace (Visual Studio Enterprise)
Функция шага назад IntelliTrace автоматически делает снимок вашего приложения на каждом контрольном пункте и событии отладчика. Записанные моментальные снимки позволяют вернуться к предыдущим точкам останова или шагам и просмотреть состояние приложения в том виде, в каком оно было в прошлом. Функция отката назад в IntelliTrace может сэкономить вам время, если вы хотите увидеть предыдущее состояние приложения, но не хотите заново запускать процесс отладки или воссоздавать необходимое состояние приложения.
Вы можете перемещаться и просматривать моментальные снимки с помощью кнопок Шаг назад и Шаг вперед на панели инструментов отладки. Эти кнопки служат для навигации по событиям, которые отображаются на вкладке "События " в окне "Средства диагностики ".
Дополнительные сведения см. на странице Проверка предыдущих состояний приложений с помощью IntelliTrace.
Отладка проблем с производительностью
Если приложение выполняется слишком медленно или использует слишком много памяти, вам может потребоваться протестировать приложение с помощью средств профилирования на ранних этапах. Дополнительные сведения о средствах профилирования, таких как средство использования ЦП и анализатор памяти, см. в статье Сначала ознакомьтесь с инструментами профилирования.
Связанное содержимое
В этом руководстве вы изучили множество функций отладчика. Вам может потребоваться более подробный обзор одной из этих функций, таких как точки останова.