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


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

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

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

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

Примечание.

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

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

Во время отладки в меню Отладка выберите Окна > Стек вызовов или нажмите клавиши ctrl+alt+C.

Screenshot showing the Call Stack Window. Стрелка определяет кадр стека, на котором находится указатель выполнения. По умолчанию это кадр стека, сведения которого отображаются в окнах: исходного кода, Локальные, Контрольные значения, Видимые и Дизассемблированный код. Чтобы изменить контекст отладчика на другой кадр стека, переключитесь на другой кадр стека.

Screenshot showing the Call Stack Window.

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

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

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

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

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

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

[<External Code>]

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

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

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

  2. Выберите пункт Перейти к кадру.

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

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

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

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

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

Выполнение кода до определенной функции из окна "Стек вызовов"

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

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

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

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

Щелкните правой кнопкой мыши в окне Стек вызовов и выберите пункт Включить вызовы между потоками.

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

В Visual Studio Enterprise (только) можно просматривать карты кода для стека вызовов во время отладки.

В окне Стек вызовов откройте контекстное меню. Выберите Показать стек вызовов на карте кода (CTRL + SHIFT + `).

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

Show Call Stack on Code Map

Просмотр дизассемблированного кода функции в стеке вызовов (C#, C++, Visual Basic, F#)

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

Включение или отключение отображения дополнительных сведений

Щелкните правой кнопкой мыши в окне Стек вызовов и установите или снимите флажок Показывать <нужные сведения>.

Внешний код .NET autodecompile .NET

Начиная с Visual Studio 2022 версии 17.7, можно автокомпилировать код .NET, дважды щелкнув внешний код в окне стека вызовов. Дополнительные сведения см. в статье "Создание исходного кода из сборок .NET во время отладки".

Загрузка символов для модуля (C#, C++, Visual Basic, F#)

В окне Стек вызовов можно загружать отладочные символы для кода, для которого символы сейчас не загружены. Это могут быть символы .NET или системные символы, скачанные с общедоступных серверов Майкрософт, либо символы из каталога на компьютере, где идет отладка.

См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.

Чтобы загрузить символы

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

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

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

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

    Появится диалоговое окно Параметры, открытое на странице Символы.

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

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

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

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

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