Метод 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

Задает размер в байтах контекста регистрации StartCon text.

[out, optional] Frames

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

[in] FramesSize

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

[out, optional] FrameContexts

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

[in] FrameContextsSize

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

[in] FrameContextsEntrySize

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

[out, optional] FramesFilled

Получает количество кадров, которые были помещены в массив Кадры и контексты в FrameContexts. Если FramesFilledNULL, эти сведения не возвращаются.

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

Возвращаемый код Описание
S_OK
Метод был успешным.
 

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

Замечания

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

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

Требования

Требование Ценность
целевая платформа Настольный
заголовка dbgeng.h (include Dbgeng.h, Ntddk.h)

См. также

GetStackTraceEx

IDebugControl5

OutputContextStackTraceEx

k, kb, kc, kd, kp, kP, kv (Display Stack Backtrace)