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


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

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

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

Окно командной строки отладчика

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

Окно "Вызовы"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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