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


Просмотр стека вызовов в WinDbg (классическая версия)

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

В WinDbg можно просмотреть стек вызовов, введя команды или используя окно "Вызовы".

Командное окно отладчика

Стек вызовов можно просмотреть, введя одну из команд k (Display Stack Backtrace) в окне команды отладчика.

Окно вызовов

В качестве альтернативы команде k можно просмотреть стек вызовов в окне "Вызовы". Чтобы открыть окно "Вызовы", выберите Стек вызовов в меню Вид.

На следующем снимке экрана приведен пример окна "Вызовы".

Снимок экрана: окно

Кнопки в окне "Вызовы" позволяют настроить представление стека вызовов. Чтобы перейти к соответствующему расположению вызова в окне Source или в окне Disassembly, дважды щелкните строку стека вызовов или выберите строку и нажмите клавишу ВВОД. Это действие также переключает локальный контекст на выбранный уровень стека. Дополнительные сведения о перемещении к этой точке или от нее см. в разделе "Управление целевым объектом".

В пользовательском режиме трассировка стека основана на стеке текущего потока. Дополнительные сведения о стеке текущего потока см. в разделе "Управление процессами и потоками".

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

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

  • Необработанные аргументы отображают первые три параметра, передаваемые в функцию. На процессоре на базе x86 этот дисплей включает первые три параметра, которые передаются функции ("Args to Child", аргументы для дочерней функции).

  • Func info отображает данные о пропуске указателя фрейма (FPO) и другую внутреннюю информацию о функции. Эта команда доступна только в процессоре на основе x86.

  • Источник отображает имена и номера строк исходного модуля после имен функций (если отладчик содержит эти сведения).

  • Надстройки отображают различные адреса, связанные с кадрами. На процессоре x86 это отображение содержит базовый указатель кадра стека ("ChildEBP") и адрес возврата ("RetAddr").

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

  • Типы Arg отображают подробные сведения о аргументах, ожидаемых и полученных функциями в стеке.

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

  • Перемещение с фреймом приводит к перемещению окна при перемещении фрейма WinDbg, даже если окно откреплено.

дополнительные сведения

Дополнительные сведения о контексте регистрации и локальном контексте см. в разделе "Изменение контекстов".