【发布时间】:2013-08-14 07:01:11
【问题描述】:
我正在尝试利用 GetThreadContext 来查看当前调试寄存器的设置。无论我调试什么程序,它都会返回 0xCCCCCCCC。我能够成功设置断点 ctx.Dr0,然后使用自定义异常处理程序捕获这些断点,但是如果我尝试查看存储在 ctx.Dr0 中的地址,它总是显示为 0xCCCCCCCC。这是为什么呢?
谢谢
CONTEXT ctx;
GetThreadContext(GetCurrentThread(),&ctx);
cout << hex << ctx.Eip << endl;
编辑**
我觉得我的问题问得不够好,因为当时我还没有意识到我的思维错误。我实际上是在尝试从我想要获取它的上下文的线程中调用 GetThreadContext。由于明显的原因,这不起作用。相反,我认为 CONTEXT ctx = {CONTEXT_FULL} 有效。最有帮助的答案是下面的 Hans Passant 评论。
【问题讨论】:
-
这就是你不检查winapi函数的返回值是否有错误,你只是不知道为什么它不起作用。