Прочитать на английском

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


структура DEBUG_STACK_FRAME (dbgeng.h)

Структура DEBUG_STACK_FRAME описывает кадр стека и адрес текущей инструкции для кадра стека.

Синтаксис

C++
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)