структура DEBUG_STACK_FRAME (dbgeng.h)
Структура DEBUG_STACK_FRAME описывает кадр стека и адрес текущей инструкции для кадра стека.
typedef struct _DEBUG_STACK_FRAME {
ULONG64 InstructionOffset;
ULONG64 ReturnOffset;
ULONG64 FrameOffset;
ULONG64 StackOffset;
ULONG64 FuncTableEntry;
ULONG64 Params[4];
ULONG64 Reserved[6];
BOOL Virtual;
ULONG FrameNumber;
} DEBUG_STACK_FRAME, *PDEBUG_STACK_FRAME;
InstructionOffset
Расположение в виртуальном адресном пространстве процесса связанной инструкции для кадра стека. Обычно это возвращаемый адрес для следующего кадра стека или текущий указатель инструкции, если кадр находится в верхней части стека.
ReturnOffset
Расположение в виртуальном адресном пространстве процесса возвращаемого адреса кадра стека. Обычно это связанная инструкция для предыдущего кадра стека.
FrameOffset
Расположение в виртуальном адресном пространстве процесса кадра стека, если известно. Некоторые архитектуры процессора не имеют кадра или имеют несколько. В таких случаях подсистема выбирает значение наиболее репрезентативным для заданного уровня стека.
StackOffset
Расположение в виртуальном адресном пространстве процесса стека процессора.
FuncTableEntry
Расположение в виртуальном адресном пространстве целевого объекта записи функции для этого кадра, если оно доступно. Если задано, этот указатель не гарантирует, что он остается действительным на неопределенный срок и не должен храниться для дальнейшего использования. Вместо этого сохраните значение ИнструкцияOffset и используйте его с IDebugSymbols3::GetFunctionEntryByOffset для получения сведений о записи функции позже.
Params[4]
Значения первых четырех слотов стека, передаваемых функции, если они доступны. Если аргументов меньше четырех, остальные записи имеют значение нулю. Эти слоты стека не гарантированно содержат значения параметров. Некоторые соглашения о вызовах и оптимизации компилятора могут препятствовать идентификации сведений о параметрах. Чтобы получить фактические символы параметров, используйте более подробные сведения о аргументах и правильную обработку расположения, используйте IDebugSymbolGroup::GetScopeSymbolGroup.
Reserved[6]
Зарезервировано для дальнейшего использования.
Virtual
Значение имеет значение TRUE, если этот кадр стека был создан отладчиком путем очистки. В противном случае значение FALSE, если он был сформирован из текущего контекста потока. Как правило, это TRUE кадра в верхней части стека, где ИнструкцияOffset является текущим указателем инструкции.
FrameNumber
Индекс кадра. Этот индекс подсчитывает количество кадров в верхней части стека вызовов. Кадр в верхней части стека, представляющий текущий вызов, имеет нулевой индекс.
Требование | Ценность |
---|---|
заголовка | dbgeng.h (include DbgEng.h) |