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


Метод IDebugControl4::GetContextStackTrace (dbgeng.h)

Метод GetContextStackTrace возвращает кадры в верхней части стека вызовов, начиная с произвольного контекста регистра и возвращая восстановленный контекст регистра для каждого кадра стека.

Синтаксис

HRESULT GetContextStackTrace(
  [in, optional]  PVOID              StartContext,
  [in]            ULONG              StartContextSize,
  [out, optional] PDEBUG_STACK_FRAME 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 , можно распечатать с помощью OutputContextStackTrace.

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

Требования

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

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

GetStackTrace

IDebugControl4

OutputContextStackTrace

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