Часто задаваемые вопросы: средство поиска функций отладчика

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

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

  • Разделы справки приостановить выполнение кода, чтобы проверить строку кода, которая может содержать ошибку?

    Задайте точку останова. Для получения дополнительной информации см. раздел Использование точек останова.

  • Имеет ли моя переменная непредвиденное значение. Или же я хочу проверить приложение, когда оно достигает определенного состояния?

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

    Дополнительные сведения см. в разделе Условия точек останова.

  • Разделы справки данные журнала в окне вывода в настраиваемом состоянии без изменения или остановки кода?

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

  • Разделы справки знать, когда изменяется значение моей переменной?

    Для C++ задайте точку останова в данных.

    Для приложений, использующих .NET Core 3, можно также задать точку останова в данных.

    В противном случае, только для C# и F#, можно отслеживать идентификатор объекта с помощью условной точки останова.

  • Разделы справки выполнение останова только в том случае, если достигнута другая точка останова?

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

  • Можно ли попасть в точку останова только один раз?

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

  • Можно ли приостановить код внутри цикла при определенной итерации?

    Установите зависимый точку останова, которая прерывает выполнение только в том случае, если первая точка останова. Дополнительные сведения см. в разделе Количество обращений.

  • Как приостановить код в начале функции, когда я знаю имя функции, но не его расположение?

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

  • Как приостановить код в начале нескольких функций с одинаковым именем?

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

  • Управление и отслеживание моих точек останова

    Используйте окно Точки останова. Дополнительные сведения см. в разделе Управление точками останова.

  • Приостановка кода и отладка при возникновении определенного или необработанного исключения

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

  • Установка точки останова из стека вызовов

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

  • Приостановка кода с определенной инструкцией сборки

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

Навигация по коду

  • Как узнать, как выполнить шаги по коду при отладке?

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

  • Можно ли запустить код в определенную строку, пропуская точки останова, не удаляя или отключая их?

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

  • Если в моей строке кода есть вызовы различных методов, можно ли перейти к конкретному методу?

    Щелкните правой кнопкой мыши строку кода, чтобы открыть контекстное меню, которое позволяет выбрать "Шаг в конкретный". Откроется список всех методов, которые можно выполнить. Теперь можно выбрать нужный метод.

Проверка и визуализация данных

  • Как проверка значение переменных при запуске приложения?

    Наведите указатель мыши на переменные, используя подсказки по данным, или проверьте переменные в окне видимых и локальных переменных.

  • Можно ли наблюдать изменение значения определенной переменной?

    Установите контрольное значение для переменной. Дополнительные сведения см. в разделе Установка контрольных значений для переменных.

  • Как просмотреть строки, слишком длинные для окна отладчика?

    Визуализатор строк показывает строки, слишком длинные для окна подсказки данных или отладчика. Он также помогает определить неправильно сформированные строки.
    Встроенный визуализатор строк в Visual Studio включает параметры text, XML, HTML и JSON.

  • Как просмотреть большие объекты коллекции?

    Визуализатор набора данных позволяет просматривать содержимое набора данных, DataTable, DataView или DataViewManager. Визуализатор IEnumerable позволяет просматривать такие объекты, как массивы, список и т. д. Дополнительные сведения см. в разделе Табличные визуализаторы.

Отладка приложения, которое уже запущено

  • Как выполнить отладку запущенных приложений на локальных или удаленных компьютерах, отладить несколько процессов одновременно, отладить приложения, которые не были созданы в Visual Studio, или отлаживать любое приложение, которое я не начал с Visual Studio?

    См. раздел Присоединение к выполняемому процессу.

  • Как многократно подключиться к одному приложению?

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

Отладка многопоточных приложений

Анализ памяти

  • Имеет ли мое приложение утечку памяти?

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

  • Как проанализировать использование памяти для собственных или управляемых приложений?

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

  • Как проанализировать использование памяти для собственных или управляемых приложений без подключения отладчика? Используйте профилировщик производительности Visual Studio с включенным средством использования памяти.
    См. раздел "Анализ использования памяти".

  • Можно ли сравнить использование памяти между двумя точками во времени?

    Сравните моментальные снимки в средстве памяти или сравните два дампа кучи с помощью функции диффа. См. раздел "Анализ использования памяти".

Отладка внешнего кода

  • Можно ли просматривать только пользовательский код при отладке?

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

  • Как просмотреть или отладить необработанные инструкции сборки, выполняемые программой?

    Используйте окно disassembly из отладки > Windows > Disassembly. Вы можете выполнить одну инструкцию одновременно и даже задать точки останова для отдельных инструкций сборки.

  • Можно ли просмотреть исходный код для библиотек .NET?

    Включите серверы символов Майкрософт из символов параметров > отладки>, чтобы скачать символы и источник для библиотек .NET. См. раздел "Указание символа"

  • Как загрузить PDF-файлы из определенного или общего расположения или сервера?

    Настройте серверы символов из символов параметров > отладки>. См. раздел "Указание символа"

  • Как никогда не загружать конкретный PDB? Или как всегда можно загрузить один?

    Настройте списки включения и исключения в символах параметров > отладки>.
    См. раздел "Указание символа"

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

  • Разделы справки настроить параметры отладчика?

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

  • Как настроить сведения, отображаемые в отладчике?

    Вам может потребоваться отобразить сведения, отличные от типа объекта, в качестве значения в различных окнах отладчика. Для кода C#, Visual Basic, F#, и C++/CLI используйте атрибут DebuggerDisplay. Для более сложных вариантов можно также настроить пользовательский интерфейс, создав пользовательский визуализатор. Для машинного кода C++ используйте платформу NatVis.

Дополнительные задачи

  • Нужно ли сохранить дамп?

    При остановке на ошибке или точке останова во время отладки выберите "Сохранить дамп отладки > как". См. файлы дампа

  • Разделы справки проанализировать файл дампа?

    Откройте дампы, выбрав "Открыть файл>" в Visual Studio. чтобы начать отладку, выберите Debug with Managed Only (Отладка только с управляемым кодом), Debug with Native Only (Отладка только с машинным кодом), Debug with Mixed (Отладка со смешанным кодом) или Debug with Managed Memory (Отладка с управляемой памятью). См. файлы дампа

  • Можно ли изменить код во время сеанса отладки?

    Используйте функцию Изменить и продолжить. Для XAML используйте Горячую перезагрузку XAML.

  • Как выполнить отладку на удаленных компьютерах?

    См. раздел Удаленная отладка.

  • Как устранить проблемы с производительностью?

    См. раздел Первое знакомство со средствами профилирования.

  • Разделы справки исправить исключение?

    См. раздел Исправление исключения.