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


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

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

Если символы отладки недоступны для части стека вызовов, окно стека вызовов может не отображать правильные сведения для этой части стека вызовов, отображая вместо этого:

[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]

Заметка

Отображаемые диалоговые окна и команды меню могут отличаться от описанных здесь в зависимости от активных параметров или выпуска. Чтобы изменить параметры, выберите Параметры импорта и экспорта в меню инструментов. См. Сброс всех параметров. Окно стек вызовов похоже на вид отладки в некоторых средах разработки, таких как Eclipse.

Просмотр стека вызовов в отладчике

При отладке в меню отладки выберите Windows > стек вызовов или нажмите клавишу ctrl+alt+C.

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

снимок экрана, показывающий окно стека вызовов.

Желтая стрелка указывает на кадр стека, где в данный момент расположен указатель выполнения. По умолчанию информация о кадре стека отображается в окнах исходного кода, Локальные, Автозаполнения, Наблюдениеи Дизассемблирование. Чтобы изменить контекст отладчика на другой кадр в стеке, переключиться на другой кадр стека.

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

Отображение кода, отличного от пользователя, в окне "Стек вызовов"

Чтобы отобразить внешний или непользовательский код, щелкните правой кнопкой мыши окно стек вызовов и выберите Показать внешний код.

Чтобы отобразить внешний или непользовательский код, нажмите кнопку "Показать внешний код" на панели инструментов стека вызовов или щелкните правой кнопкой мыши окно стека вызовов и выберите показать внешний код.

Код, не относящийся к пользовательскому, — это любой код, который не отображается при включении функции Just My Code. В управляемом коде кадры, не относящиеся к пользовательскому коду, скрыты по умолчанию. Следующая нотация отображается вместо фреймов, содержащих код, не относящийся к пользователю:

[<External Code>]

Переключение на другой кадр стека (изменение контекста отладчика)

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

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

  2. Выберите , чтобы переключиться на кадр.

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

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

Чтобы найти соответствующие кадры стека вызовов, введите соответствующие поисковые термины в поле поиска, расположенном в левом верхнем углу окна стека вызовов. Соответствующие фреймы стека вызовов будут выделены.

Просмотр исходного кода функции в стеке вызовов

В окне стек вызовов щелкните правой кнопкой мыши функцию, исходный код которой вы хотите просмотреть и выберите Перейти к исходному коду.

Выполнить переход к определенной функции из окна стека вызовов

В окне стека вызовов выберите функцию, щелкните правой кнопкой мыши и выберите Запуск до курсора.

Установите точку останова на момент выхода из вызова функции

См. раздел Установите точку останова в функции стека вызовов.

Отображение вызовов к другому потоку или из другого потока

Щелкните правой кнопкой мыши окно стека вызовов: выберите Включить вызовы в/из других потоков.

Визуально проследите стек вызовов

В 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) и файлы исходного кода.

Загрузка символов

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

  2. Наведите указатель на Загрузить символы, а затем выберите Серверы символов Microsoft (при наличии) или перейдите по пути к символам.

Установить путь к символам

  1. В окне стека вызовов выберите параметры символов в контекстном меню.

    Откроется диалоговое окно параметров и откроется страница символов.

  2. Выберите параметры символов .

  3. В диалоговом окне «Параметры» щелкните значок папки.

    В поле расположений файла символов (.pdb) появится курсор.

  4. Введите путь к каталогу, где находятся символы на компьютере, на котором осуществляется отладка. Для локальной и удаленной отладки это путь на локальном компьютере.

  5. Нажмите ОК, чтобы закрыть диалоговое окно "Параметры".