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


Метод IDebugControl5::GetContextStackTraceEx (dbgeng.h)

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

Синтаксис

HRESULT GetContextStackTraceEx(
  [in, optional]  PVOID                 StartContext,
  [in]            ULONG                 StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME_EX Frames,
  [in]            ULONG                 FramesSize,
  [out, optional] PVOID                 FrameContexts,
  [in]            ULONG                 FrameContextsSize,
  [in]            ULONG                 FrameContextsEntrySize,
  [out, optional] PULONG                FramesFilled
);

Параметры

[in, optional] StartContext

Указывает контекст регистра для верхней части стека.

[in] StartContextSize

Задает размер (в байтах) контекста регистра StartContext .

[out, optional] Frames

Получает кадры стека. Количество элементов, которые содержит этот массив, равно FrameSize. Если параметр Frames имеет значение NULL, эти сведения не возвращаются.

[in] FramesSize

Указывает количество элементов в массиве Кадры.

[out, optional] FrameContexts

Получает восстановленный контекст регистра для каждого кадра в стеке. Записи в этом массиве соответствуют записям в массиве Кадров . Тип контекста потока — это структура CONTEXT для эффективного процессора целевого объекта. Если frameContexts имеет значение NULL, эти сведения не возвращаются.

[in] FrameContextsSize

Задает размер (в байтах) памяти, на которую указывает FrameContexts. Число возвращаемых кадров стека равно количеству возвращаемых контекстов, а FrameContextsSize должно быть равно FrameSize times FrameContextsEntrySize.

[in] FrameContextsEntrySize

Задает размер (в байтах) каждого контекста кадра в FrameContexts.

[out, optional] FramesFilled

Получает количество кадров, помещенных в массив Frame и контексты в FrameContexts. Если параметр FramesFilled имеет значение NULL, эти сведения не возвращаются.

Возвращаемое значение

Код возврата Описание
S_OK
Метод выполнен успешно.
 

Этот метод также может возвращать значения ошибок. Дополнительные сведения см. в разделе Возвращаемые значения.

Комментарии

Трассировку стека, возвращаемую в frame и FrameContexts , можно распечатать с помощью OutputContextStackTraceEx.

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть dbgeng.h (включая Dbgeng.h, Ntddk.h)

См. также раздел

GetStackTraceEx

IDebugControl5

OutputContextStackTraceEx

k, kb, kc, kd, kp, kP, kv (обратная трассировка стека отображения)