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