Ознакомьтесь с советами и рекомендациями по повышению производительности отладчика в Visual Studio
В этой статье приводятся советы и рекомендации по работе с отладчиком в Visual Studio. Обзор основных возможностей отладчика см. в статье Первое знакомство с отладчиком. В этой статье рассматриваются некоторые моменты, не включенные в обзор возможностей.
Сочетания клавиш
Список наиболее распространенных сочетаний клавиш, связанных с отладкой, см . в разделе "Отладка " в сочетаниях клавиш.
Советы по закреплению данных
Если во время отладки вы часто наводите указатель мыши на подсказки по данным, можно закрепить подсказку для переменной, чтобы получать к ней быстрый доступ. Переменная остается закрепленной даже после перезапуска. Чтобы закрепить подсказку по данным, наведите на нее курсор и щелкните значок булавки. Можно закрепить несколько переменных.
Есть несколько других способов настроить советы по работе, например расширять подсказку данных (подсказка данных типа записки) или устанавливать для нее прозрачность. Дополнительные сведения см. в статье Просмотр значений данных в подсказках по данным в редакторе кода.
Изменение кода и продолжение отладки (C#, VB, C++)
В большинстве языков, поддерживаемых Visual Studio, можно изменять код во время сеанса отладки, а затем продолжать отладку. Для использования этой функции щелкните код, чтобы установить в нем курсор, когда отладчик приостановлен, внесите изменения и нажмите клавишу F5, F10 или F11, чтобы продолжить отладку.
Дополнительные сведения об этой функции и ее ограничениях см. в статье Изменить и продолжить.
Изменение кода XAML и продолжение отладки
Сведения об изменении кода XAML во время сеанса отладки см. в статье Создание и отладка выполняющегося кода XAML с помощью горячей перезагрузки XAML.
Отладка проблем, которые трудно воспроизвести
Если вам трудно воссоздать определенное состояние в своем приложении или на это уходит много времени, подумайте, может ли помочь использование условной точки останова. Можно использовать условные точки останова и фильтровать точки останова, чтобы избежать разбиения кода приложения, пока приложение не перейдет в нужное состояние (например, состояние, в котором переменная хранит неправильные данные). Вы можете установить условия, используя выражения, фильтры или счетчики попаданий и т. д.
Создание условной точки останова
Щелкните правой кнопкой мыши значок точки останова (красный шар) и выберите "Условия".
В окне Параметры точки останова введите выражение.
Если вы заинтересованы в другом типе условия, выберите Фильтр вместо Условное выражение в диалоговом окне Параметры точки останова, а затем следуйте советам для фильтра.
Настройка отображения данных в отладчике
С помощью атрибута DebuggerDisplay в C#, Visual Basic и C++ (только для кода C++/CLI) можно указать отладчику, какую информацию следует отображать. Для кода C++ то же самое можно сделать с помощью визуализаций Natvis.
Присоединение к одному приложению многократно
При использовании функции подключения к процессу можно быстро выполнить повторное присоединение к процессу, к которому вы ранее подключились, выбрав> "Повторно подключить отладку к процессу" (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается подключиться к последнему процессу, к которому вы подключились, сначала попытаясь сопоставить идентификатор предыдущего процесса и, если это не удается, сопоставив имя предыдущего процесса. Если совпадений не найдено или несколько процессов имеют одно и то же имя, откроется диалоговое окно Подключение к процессу, в котором можно выбрать правильный процесс.
Отслеживание объекта, не входящего в область (C#, Visual Basic)
Можно легко просматривать переменные с помощью окон отладчика, таких как окно Контрольные значения. Однако если переменная выходит из область в окне "Контрольные данные", вы можете заметить, что она неактивна. В некоторых сценариях приложений значение переменной может измениться даже в том случае, если переменная не область, и вы можете внимательно наблюдать за ней (например, переменная может получить сбор мусора). Для отслеживания переменной создайте для нее идентификатор объекта в окне Контрольные значения.
Создание идентификатора объекта
Установите точку останова рядом с переменной, которую необходимо отслеживать.
Запустите отладчик (F5) и остановите его в точке останова.
Найдите переменную в окне Локальные (Отладка > Окна > Локальные), щелкните переменную правой кнопкой мыши и выберите команду Создать идентификатор объекта.
В окне $ вы должны увидеть символ Локальные . Эта переменная является идентификатором объекта.
Щелкните правой кнопкой мыши переменную идентификатора объекта и выберите пункт Добавить контрольное значение.
Дополнительные сведения см. в статье Создание предложения идентификатора объекта.
Просмотр возвращаемых значений для функций
Чтобы просмотреть возвращаемые значения для функций, при пошаговом выполнении кода взгляните на функции, отображаемые в окне Видимые. Чтобы просмотреть возвращаемое значение для функции, убедитесь, что нужная функция уже выполнена (нажмите F10 один раз, если в данный момент вы остановились на вызове функции). Если окно закрыто,выберите Отладка > Окна > Видимые, чтобы открыть окно Видимые.
Кроме того, для просмотра возвращаемых значений можно вводить функции в окно Интерпретация. (Откройте его, выбрав Отладка > Окна > Интерпретация.)
Кроме того, в окнах Контрольные значения и Интерпретация можно использовать псевдопеременные, такие как $ReturnValue
.
Проверка строк в визуализаторе
При работе со строками может быть целесообразно просмотреть всю отформатированную строку. Чтобы просмотреть строку обычного текста, XML, HTML или JSON, щелкните значок с увеличением стекла при наведении указателя мыши на переменную, содержащую строковое значение.
Визуализатор строк может помочь определить, имеет ли строка неправильный формат, в зависимости от типа строки. Например, пустое поле Значение указывает, что строка не распознается типом визуализатора. Дополнительные сведения см. в статье Диалоговое окно визуализатора строк.
Для некоторых других типов, таких как объекты DataSet и DataTable, отображаемых в окнах отладчика, можно также открыть встроенный визуализатор.
Анализ данных об использовании памяти
Вы можете принимать и сравнивать моментальные снимки кучи, оптимизировать использование памяти и найти утечку памяти с помощью средств использования памяти. Дополнительные сведения см. в разделе "Выбор средства анализа памяти".
Создание файла дампа
Файл дампа — это моментальный снимок, показывающий процесс, который выполнялся и модули, загруженные для приложения в определенный момент времени. Дамп со сведениями о куче также содержит моментальный снимок памяти приложения на этот момент. В основном дампы используются для отладки проблем на компьютерах, к которым у разработчиков нет доступа.
Если необходимо сохранить файл дампа, выберите " Сохранить отладочный > дамп как".
Чтобы проанализировать файл дампа, выберите "Открыть файл>" в Visual Studio. Чтобы начать отладку с помощью файла дампа, выберите "Отладка с управляемым только", "Отладка с собственным только", "Отладка с смешанным" или "Отладка с помощью управляемой памяти".
Дополнительные сведения см. в разделе "Файлы дампа".
Прерывание выполнения кода при обработанных исключениях
Отладчик прерывает выполнение кода при необработанных исключениях. Однако обработанные исключения (например, исключения, возникающие в блоке try/catch
) могут также быть источником ошибок и, возможно, вам потребуется изучить их. Можно настроить прерывание работы отладчика при обработанных исключениях, а также настроить параметры в диалоговом окне Параметры исключений. Откройте это диалоговое окно, выбрав Отладка > Окна > Параметры исключений.
В диалоговом окне Параметры исключений можно указать отладчику прерывать выполнение кода при конкретных исключениях. На приведенном ниже рисунке отладчик прерывает выполнение кода при возникновении System.NullReferenceException
. Дополнительные сведения см. в статье Управление исключениями.
Изменение потока выполнения
Когда отладчик приостановил выполнение на строке кода, с помощью мыши захватите указатель с желтой стрелкой в левой части. Переместите указатель с желтой стрелки на другую точку в пути выполнения кода. Чтобы продолжить выполнение приложения, нажмите клавишу F5 или выполните шаг-команду.
Изменяя поток выполнения, можно решать множество задач, например тестировать различные пути выполнения кода или повторно выполнять код без перезапуска отладчика. Дополнительные сведения см. в разделе "Перемещение указателя выполнения".
Предупреждение
Как правило, при работе с этой функцией необходимо соблюдать осторожность — вы увидите соответствующее предупреждение во всплывающей подсказке. Могут отображаться и другие предупреждения. При перемещении указателя предыдущее состояние приложения не возвращается.
Отладка взаимоблокировок и состояний гонки
Если необходимо отладить проблемы, которые являются общими для многопоточных приложений, зачастую бывает полезно просматривать расположение потоков во время отладки. Это можно легко сделать с помощью кнопки Показать потоки в исходном коде.
Чтобы отобразить потоки в исходном коде, выполните следующее:
При отладке нажмите кнопку "Показать потоки в источнике" на панели инструментов отладки.
Посмотрите на переплет в левой части окна. На этой строке отображается значок маркера потока, который напоминает две ткани. маркер потока указывает, что некий поток остановлен в этом месте.
Обратите внимание, что маркер потока может быть частично скрыт точкой останова.
Наведите указатель мыши на маркер потока. Появится подсказка. Подсказка сообщает имя и идентификационный номер каждого остановившегося тут потока.
Расположение потоков можно также просмотреть в окне Параллельные стеки.
Узнайте, как отладчик подключается к приложению (C#, C++, Visual Basic, F#)
Чтобы присоединиться к выполняющемуся приложению, отладчик загружает файлы символов (PDB), созданные для той же сборки приложения, которую нужно отладить. В некоторых сценариях могут потребоваться базовые сведения о файлах символов. Изучить загрузку файлов символов в Visual Studio можно с помощью окна Модули.
Откройте окно Модули во время отладки, выбрав Отладка > Окна > Модули. В окне Модули можно узнать, какие модули будут рассматриваться отладчиком в качестве пользовательского кода (или моего кода), а также проверить состояние загрузки символов для модуля. В большинстве сценариев отладчик автоматически находит файлы символов для пользовательского кода, но, если требуется выполнить шаг с заходом (или отладку) в код .NET, системный код или сторонний код библиотеки, необходимо выполнить дополнительные действия для получения нужных файлов символов.
Сведения о символах можно загрузить непосредственно из окна Модули, щелкнув правой кнопкой мыши и выбрав пункт Загрузить символы.
Иногда разработчики приложений поставляют приложения без соответствующих файлов символов (в целях уменьшения объема памяти), но сохраняют копию соответствующих файлов символов для сборки, чтобы отладить выпущенную версию позже.
Сведения о том, каким образом отладчик классифицирует код как пользовательский, см. в статье об отладке пользовательского кода с помощью функции "Только мой код". Дополнительные сведения об файлах символов см. в статье Указание файлов символов (PDB) и файлов с исходным кодом в отладчике Visual Studio.
Подробнее
Дополнительные советы и рекомендации, а также более подробные сведения см. в следующих записях блога.
- 7 lesser known hacks for debugging in Visual Studio (7 малоизвестных советов по отладке в Visual Studio)
- 7 hidden gems in Visual Studio (7 тайных сокровищ в Visual Studio)