Практическое руководство. Использование окна стека вызова
С помощью окна Стек вызовов можно просматривать вызовы функций и процедур, которые в данный момент находятся в стеке.
В окне Стек вызовов отображается имя каждой функции и язык программирования, на котором она написана. Имя функции или процедуры может сопровождаться дополнительной информацией, такой как имя модуля, номер строки, а также имена, типы и значения параметров. Отображение этих дополнительных сведений может быть включено или отключено.
Желтая стрелка указывает на кадр стека, в котором находится указатель выполнения. По умолчанию это фрейм, сведения которого отображаются в окнах: исходного кода, Дизассемблированный код , Локальные , Контрольные значения и Видимые. Если вы хотите изменить контекст на другой кадр стека, можно сделать это в окне Стек вызовов.
Если символы отладки недоступны для части стека вызовов, в окне Стек вызовов может не получиться отобразить правильные сведения об этой части стека вызовов. Появится следующая запись:
[Фреймы ниже могут быть неправильными и/или отсутствовать, не загружены символы для имя.dll]
В случае управляемого кода окно Стек вызовов по умолчанию скрывает сведения о коде, не принадлежащем пользователю. Следующая запись отображается вместо скрытой информации:
[<External Code>]
Не принадлежащий пользователю код — это любой код, который не является "моим кодом". При необходимости в контекстном меню можно выбрать отображение сведений стека вызовов, касающихся кода, не принадлежащего пользователю.
С помощью контекстного меню можно выбрать, следует ли отображать вызовы между потоками.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от действующих параметров или выпуска среды.Чтобы изменить параметры, выберите в меню Сервис команду Импорт и экспорт параметров.Дополнительные сведения см. в разделе Настройка параметров разработки в Visual Studio.
Чтобы открыть окно "Стек вызовов" в режиме прерывания или в режиме выполнения
- В меню Отладка выберите пункт Окна, а затем Стек вызовов.
Чтобы включить или отключить отображение дополнительных сведений
- Щелкните правой кнопкой мыши в окне Стек вызовов и установите или снимите флажок Показать <the information that you want>.
Чтобы отобразить в окне "Стек вызовов" фреймы кода, не написанного пользователем
- Щелкните правой кнопкой мыши в окне Стек вызовов и выберите в контекстном меню пункт Показать внешний код.
Чтобы перейти к другому кадру стека
В окне Стек вызовов щелкните правой кнопкой фрейм, код и данные которого нужно просмотреть.
Выберите пункт Перейти к фрейму.
Зеленая стрелка с фигурным концом появится рядом с выбранным фреймом. Указатель выполнения остается в исходном кадре, который по-прежнему отмечен желтой стрелкой. При выборе команд Шаг или Продолжить в меню Отладка выполнение продолжится с исходного, а не с выбранного фрейма.
Чтобы отобразить вызовы в другой поток или из него
- Щелкните правой кнопкой мыши в окне Стек вызовов и выберите пункт Включить вызовы между потоками.
Чтобы просмотреть исходный код функции в стеке вызовов
- В окне Стек вызовов щелкните правой кнопкой мыши функцию, исходный код которой нужно увидеть, и выберите пункт К исходному коду.
Чтобы выполнить визуальную трассировку стека вызовов
В окне Стек вызовов откройте контекстное меню. Выберите Показать стек вызовов на карте кода. (Клавиатура: CTRL + SHIFT + `).
Подробнее см. раздел Сопоставление методов в визуализации стека вызовов при отладке в Visual Studio.
Чтобы просмотреть дизассемблированный код функции в стеке вызовов
- В окне Стек вызовов щелкните правой кнопкой мыши функцию, дизассемблированный код которой нужно увидеть, и выберите пункт К дизассемблированному коду.
Чтобы выполнить код вплоть до определенной функции из окна "Стек вызовов"
- Подробнее см. раздел Выполнение до указанного расположения или функции.
Чтобы задать точка останова в точке выхода вызова функции
- Подробнее см. раздел Установка точки останова на строке исходного кода, инструкции ассемблера или функции в стеке вызовов.
Чтобы загрузить символы для модуля
- В окне Стек вызовов щелкните правой кнопкой мыши кадр с модулем, символы которого нужно перезагрузить, и выберите пункт Загрузить символы.
Загрузка символов
В окне Стек вызовов можно загружать символы отладки для кода, для которого в данный момент нет загруженных отладочных символов. Это могут быть символы платформы .NET Framework или системные символы, загруженные с общедоступных серверов символов корпорации Microsoft, или символы в каталоге символов на компьютере, на котором производится отладка.
См. раздел Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.
Чтобы загрузить символы
В окне Стек вызовов щелкните правой кнопкой какой-либо кадр, для которого не загружены символы. Кадр затеняется.
Выберите пункт Загрузить символы из и затем Серверы символов Microsoft или Путь к символам.
Установка пути к символам
В окне Стек вызовов выберите пункт Параметры символов из контекстного меню.
Появится диалоговое окно Параметры, открытое на странице Символы.
Выберите пункт Параметры символов.
В диалоговом окне Параметры щелкните значок "Папка".
В поле Места размещения файлов символов (.pdb) появится курсор.
Введите путь к каталогу с символами на компьютере, на котором производится отладка. В случае локальной отладки это будет локальный компьютер. В случае удаленной отладки это удаленный компьютер.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Параметры.
См. также
Ссылки
Практическое руководство. Изменение числового формата в окнах отладчика
Основные понятия
Смешанный код и отсутствующие данные в окне стека вызовов
Другие ресурсы
Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio