В этой документации рассматриваются часто задаваемые вопросы об отладке функций в 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.
Как выполнить отладку на удаленных компьютерах?
См. раздел Удаленная отладка.
Как устранить проблемы с производительностью?
См. раздел Первое знакомство со средствами профилирования.
Разделы справки исправить исключение?
См. раздел Исправление исключения.