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


Ознакомьтесь с советами и рекомендациями по повышению производительности отладчика в Visual Studio

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

Сочетания клавиш

Список наиболее распространенных сочетаний клавиш, связанных с отладкой, см. в разделе "Отладка " в сочетаниях клавиш.

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

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

Закрепление подсказки данных

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

Изменение кода и продолжение отладки (C#, VB, C++)

На большинстве языков, поддерживаемых Visual Studio, можно изменить код в середине сеанса отладки и продолжить отладку. Чтобы использовать эту функцию, щелкните курсором по коду во время паузы в отладчике, внесите изменения и нажмите клавишу F5 , F10 или F11 для продолжения отладки.

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

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

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

Сведения об изменении кода XAML во время сеанса отладки см. статью Создание и отладка исполняемого кода XAML в режиме горячей замены XAML.

Проблемы отладки, которые трудно воспроизвести

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

Создание условной точки останова

  1. Щелкните правой кнопкой мыши значок точки останова (красный шар) и выберите "Условия".

  2. В окне параметров точки останова введите выражение.

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

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

Настройка данных для отображения в отладчике

Для C#, Visual Basic и C++ (только для кода C++/CLI) можно сообщить отладчику, какие сведения нужно отобразить с помощью атрибута DebuggerDisplay . Для кода C++ можно сделать то же самое с помощью визуализаций Natvis.

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

При использовании функции подключения к процессу можно быстро выполнить повторное присоединение к процессу, к которому вы ранее подключились, выбрав> "Повторно подключить отладку к процессу" (SHIFT+ALT+P). При выборе этой команды отладчик сразу же попытается подключиться к последнему процессу, к которому вы подключились, сначала попытаясь сопоставить идентификатор предыдущего процесса и, если это не удается, сопоставив имя предыдущего процесса. Если совпадения не найдены или если несколько процессов имеют одинаковое имя, откроется диалоговое окно "Присоединение к процессу ", чтобы выбрать правильный процесс.

Отслеживание объекта вне области (C#, Visual Basic)

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

Создание идентификатора объекта

  1. Установите точку останова рядом с переменной, которую требуется отслеживать.

  2. Запустите отладчик (F5) и остановите его в точке останова.

  3. Найдите переменную в окне "Локальные" (отладка > локальных параметров Windows>), щелкните ее правой кнопкой мыши и выберите "Создать идентификатор объекта".

    Создание идентификатора объекта

  4. Вы должны увидеть $ плюс число в окне Locals. Эта переменная является идентификатором объекта.

  5. Щелкните правой кнопкой мыши переменную идентификатора объекта и нажмите кнопку "Добавить контроль".

Дополнительные сведения см. в разделе "Создание идентификатора объекта".

Просмотр возвращаемых значений для функций

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

Окно Автоматизации

Кроме того, можно ввести функции в окне Immediate для просмотра возвращаемых значений. (Откройте его с помощью Окна > отладки > Немедленного выполнения.)

Немедленное окно

Вы также можете использовать псевдопеременные в окне «Просмотр» и «Немедленное выполнение», например $ReturnValue.

Проверка строк в визуализаторе

При работе со строками может быть полезно просмотреть всю форматированную строку. Чтобы просмотреть обычный текст, XML, HTML или строку JSON, наведите курсор на переменную, содержащую строковое значение, и щелкните значок лупы VisualizerIcon.

Открытие строкового визуализатора

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

Визуализатор строк

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

Анализ использования памяти

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

Создание файла дампа

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

Если необходимо сохранить файл дампа, выберите Отладка > Сохранить дамп как.

Чтобы проанализировать файл дампа, выберите "Открыть файл>" в Visual Studio. Чтобы начать отладку с помощью файла дампа, выберите "Отладка с управляемым только", "Отладка с собственным только", "Отладка с смешанным" или "Отладка с помощью управляемой памяти".

Дополнительные сведения см. в разделе "Файлы дампа".

Остановка выполнения кода при обработке исключений

Отладчик входит в код при необработанных исключениях. Однако обработка исключений (например, исключений, происходящих в try/catch блоке) также может быть источником ошибок и может потребоваться изучить, когда они происходят. Настроить отладчик для остановки программы при обработке исключений можно через параметры в диалоговом окне "Параметры исключений". Откройте это диалоговое окно, выбрав "Отладка > параметров исключений Windows>".

Диалоговое окно "Параметры исключения" позволяет отладчику разбить код на определенные исключения. На приведенном ниже рисунке отладчик останавливает выполнение кода при каждом возникновении события System.NullReferenceException. Дополнительные сведения см. в разделе "Управление исключениями".

Диалоговое окно

Изменение потока выполнения

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

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

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

Предупреждение

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

Отладьте взаимоблокировки и условия гонки

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

Чтобы отобразить потоки в исходном коде, выполните следующее:

  1. При отладке нажмите кнопку «Показать потоки в исходном коде»«Показать потоки в исходном коде» на панели инструментов отладки.

  2. Посмотрите на водосточный желоб в левой части окна. В этой строке отображается значок маркера нитиThread Marker, который похож на две нити. Маркер потока указывает, что поток остановлен в этом расположении.

    Обратите внимание, что маркер потока может быть частично скрыт брейкпоинтом.

  3. Наведите указатель мыши на маркер потока. Появится подсказка данных. В подсказке данных указано имя и номер идентификатора потока для каждого остановленного потока.

    Вы также можете просмотреть расположение потоков в окне Параллельных стеков.

Узнайте, как отладчик подключается к приложению (C#, C++, Visual Basic, F#)

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

Откройте окно "Модули" при отладке, выбрав "Отладка > модулей Windows>". В окне "Модули" можно определить, какие модули отладчик рассматривает как пользовательский код или мой код, а также состояние загрузки символов для модуля. В большинстве случаев отладчик автоматически находит файлы символов для пользовательского кода, но если вы хотите выполнить шаг в код .NET , системный код или сторонний код библиотеки, дополнительные шаги требуются для получения правильных файлов символов.

Просмотр сведений о символах в окне Модули

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

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

Чтобы узнать, как отладчик классифицирует код в качестве пользовательского кода, см. статью Just My Code. Дополнительные сведения о файлах символов можно найти в разделе Указание файлов символов (.pdb) и исходных файлов в отладчике Visual Studio.

Подробнее

Дополнительные советы и рекомендации и более подробные сведения см. в следующих записях блога:

Сочетания клавиш