【发布时间】:2012-05-06 07:01:38
【问题描述】:
我一直在使用 WinDbg 调试转储文件。
有一个很好的“技巧”适用于 x86 本机程序,您可以扫描堆栈以查找 CONTEXT_ALL 标志 (0x1003f)。
在 x64 中,CONTEXT_ALL 标志显然不包含 0x1003f ...
现在的问题是,有时当您将本机代码与托管代码混合使用时,发现异常的常规方法(如 .exc 或 .lastevent)。
这个 0x1003f 在 x64 中的等价物是什么?有这样的常数吗?
编辑:
顺便说一句,如果您想知道,理论上它应该是 10003f 因为定义:
#define CONTEXT_I386 0x00010000
#define CONTEXT_AMD64 0x00100000
#define CONTEXT_CONTROL 0x00000001L // SS:SP, CS:IP, FLAGS, BP
#define CONTEXT_INTEGER 0x00000002L // AX, BX, CX, DX, SI, DI
#define CONTEXT_SEGMENTS 0x00000004L // DS, ES, FS, GS
#define CONTEXT_FLOATING_POINT 0x00000008L // 387 state
#define CONTEXT_DEBUG_REGISTERS 0x00000010L // DB 0-3,6,7
#define CONTEXT_EXTENDED_REGISTERS 0x00000020L // cpu specific extensions
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS)
#define CONTEXT_ALL (CONTEXT_FULL | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS | CONTEXT_EXTENDED_REGISTERS)
#define CONTEXT_I386_FULL CONTEXT_I386 | CONTEXT_FULL
#define CONTEXT_I386_ALL CONTEXT_I386 | CONTEXT_ALL
#define CONTEXT_AMD64_FULL CONTEXT_AMD64 | CONTEXT_FULL
#define CONTEXT_AMD64_ALL CONTEXT_AMD64 | CONTEXT_ALL
但这不是……
【问题讨论】:
标签: debugging exception 64-bit windbg