Просмотр стека вызовов и использование окна "Стек вызовов" в отладчике
С помощью окна Стек вызовов можно просматривать вызовы функций и процедур, которые в данный момент находятся в стеке. В окне Стек вызовов показан порядок вызова методов и функций. Стек вызовов хорошо подходит для изучения и анализа потока выполнения приложения.
Если символы отладки недоступны для части стека вызовов, в окне Стек вызовов может не получиться отобразить правильные сведения об этой части стека вызовов. Вместо них будет отображаться следующая информация.
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
Примечание.
Отображаемые диалоговые окна и команды меню могут отличаться от описанных здесь в зависимости от текущих параметров или выпуска. Чтобы изменить параметры, выберите в меню Сервис пункт Импорт и экспорт параметров. См. раздел "Сброс всех параметров". Окно Стек вызовов аналогично перспективе "Отладка" в некоторых интегрированных средах разработки, например Eclipse.
Просмотр стека вызовов в отладчике
Во время отладки в меню Отладка выберите Окна > Стек вызовов или нажмите клавиши ctrl
+alt
+C
.
Стрелка определяет кадр стека, на котором находится указатель выполнения. По умолчанию это кадр стека, сведения которого отображаются в окнах: исходного кода, Локальные, Контрольные значения, Видимые и Дизассемблированный код. Чтобы изменить контекст отладчика на другой кадр стека, переключитесь на другой кадр стека.
Желтая стрелка указывает на кадр стека, в котором находится указатель выполнения. По умолчанию это кадр стека, сведения которого отображаются в окнах: исходного кода, Локальные, Контрольные значения, Видимые и Дизассемблированный код. Чтобы изменить контекст отладчика на другой кадр стека, переключитесь на другой кадр стека.
Вы также можете просматривать кадры стека исключений в стеке вызовов во время отладки. Дополнительные сведения см. в разделе "Просмотр стека вызовов" в вспомогательном средстве исключения.
Отображение непользовательского кода в окне "Стек вызовов"
Чтобы отобразить внешний или непользовательский код, установите переключатель "Показать внешний код" правой кнопкой мыши в окне "Стек вызовов" и выберите "Показать внешний код".
Чтобы отобразить внешний или непользовательский код, нажмите кнопку "Показать внешний код" на панели инструментов стека вызовов или щелкните правой кнопкой мыши окно "Стек вызовов" и выберите "Показать внешний код".
Непользовательский код — это любой код, который не отображается при включении режима Только мой код. В управляемом коде кадры непользовательского кода скрыты по умолчанию. Вместо кадров непользовательского кода отображается следующая запись.
[<External Code>]
Переключение на другой кадр стека (изменение контекста отладчика)
В окне Стек вызовов щелкните правой кнопкой кадр стека, код и данные которого нужно просмотреть.
Или можно дважды щелкнуть кадр в окне Стек вызовов, чтобы переключиться на этот кадр.
Выберите пункт Перейти к кадру.
Рядом с выбранным кадром стека появится зеленая стрелка с фигурным концом. Указатель выполнения остается в исходном кадре, который по-прежнему отмечен желтой стрелкой. При выборе команд Шаг или Продолжить в меню Отладка выполнение продолжится с исходного, а не с выбранного кадра.
Просмотр всех связанных потоков
Переключите кнопку "Просмотреть все потоки", чтобы просмотреть все связанные потоки в окне Parallel Stack.
Поиск стека вызовов
Чтобы найти соответствующие кадры стека вызовов, введите соответствующие условия поиска в поле поиска, расположенном в левом верхнем углу окна стека вызовов. Соответствующие кадры стека вызовов будут выделены.
Просмотр исходного кода функции в стеке вызовов
В окне Стек вызовов щелкните правой кнопкой мыши функцию, исходный код которой нужно увидеть, и выберите пункт К исходному коду.
Выполнение кода до определенной функции из окна "Стек вызовов"
В окне Стек вызовов выберите функцию, щелкните ее правой кнопкой мыши и выберите команду Выполнить до курсора.
Установка точки останова в точке выхода вызова функции
См. раздел Установка точки останова в функции стека вызовов.
Отображение вызовов в другой поток или из него
Щелкните правой кнопкой мыши в окне Стек вызовов и выберите пункт Включить вызовы между потоками.
Визуальная трассировка стека вызовов
В Visual Studio Enterprise (только) можно просматривать карты кода для стека вызовов во время отладки.
В окне Стек вызовов откройте контекстное меню. Выберите Показать стек вызовов на карте кода (CTRL + SHIFT + `).
Дополнительные сведения см. в статье Создание визуальной карты стека вызовов при отладке.
Просмотр дизассемблированного кода функции в стеке вызовов (C#, C++, Visual Basic, F#)
В окне Стек вызовов щелкните правой кнопкой мыши функцию, дизассемблированный код которой нужно увидеть, и выберите пункт К дизассемблированному коду.
Включение или отключение отображения дополнительных сведений
Щелкните правой кнопкой мыши в окне Стек вызовов и установите или снимите флажок Показывать <нужные сведения>.
Внешний код .NET autodecompile .NET
Начиная с Visual Studio 2022 версии 17.7, можно автокомпилировать код .NET, дважды щелкнув внешний код в окне стека вызовов. Дополнительные сведения см. в статье "Создание исходного кода из сборок .NET во время отладки".
Загрузка символов для модуля (C#, C++, Visual Basic, F#)
В окне Стек вызовов можно загружать отладочные символы для кода, для которого символы сейчас не загружены. Это могут быть символы .NET или системные символы, скачанные с общедоступных серверов Майкрософт, либо символы из каталога на компьютере, где идет отладка.
См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.
Чтобы загрузить символы
В окне Стек вызовов щелкните правой кнопкой какой-либо кадр стека, для которого не загружены символы. Кадр затеняется.
Укажите на параметр Загрузить символы, а затем выберите Серверы символов (Майкрософт) (если доступно) или перейдите по пути к символам.
Установка пути к символам
В окне Стек вызовов выберите пункт Параметры символов из контекстного меню.
Появится диалоговое окно Параметры, открытое на странице Символы.
Выберите Параметры символов.
В диалоговом окне Параметры щелкните значок "Папка".
В поле Места размещения файлов символов (.pdb) появится курсор.
Введите путь к каталогу с символами на компьютере, на котором производится отладка. При локальной и удаленной отладке это путь на локальном компьютере.
Нажмите кнопку OK, чтобы закрыть диалоговое окно Параметры.