Метод 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, эти сведения не возвращаются.
Возвращаемое значение
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
Этот метод также может возвращать значения ошибок. Дополнительные сведения см. в разделе Возвращаемые значения.
Комментарии
Трассировку стека, возвращаемую в Frame и FrameContexts , можно распечатать с помощью OutputContextStackTrace.
Обычно при очистке стека восстанавливается только подмножество регистров. Например, очистка стека не всегда восстанавливает состояние изменяемого регистра, так как переменные регистры являются временными регистрами, и коду не нужно сохранять их. Регистры, которые не восстанавливаются при очистке, остаются последним восстановленным значением, поэтому следует соблюдать осторожность при использовании состояния регистра, которое не может быть восстановлено при очистке.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | dbgeng.h (включая Dbgeng.h, Ntddk.h) |
См. также раздел
k, kb, kc, kd, kp, kP, kv (обратная трассировка стека отображения)