我在 Visual Studio 调试器下的断点处暂停了一个进程。我可以在非侵入模式下附加尽可能多的 cdb(微软的控制台调试器)
cdb -p pid -pvr
如何使用我自己的使用调试引擎 API 的程序来实现相同的目的。
IDebugClient* debugClient = 0;
(DebugCreate( __uuidof(IDebugClient), (void **)&debugClient );
debugClient->AttachProcess(0,id,DEBUG_ATTACH_NONINVASIVE
|DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND);
此代码导致 E_INVALIDARG。这种组合是不允许的吗?下面的一个有效,但是当它调用 GetStackTrace 时,它返回 E_UNEXPECTED。
debugClient->AttachProcess(0,id,DEBUG_ATTACH_NONINVASIVE);
debugControl->GetStackTrace(0, 0, 0, pStackFrames, maxFrames, &framesFilled);
我有兴趣附加到已经以非侵入方式调试中断的进程,并从其当前堆栈和一些全局变量值中获取一些局部变量。
其次,有人可以指出我用于像 !stl 那样迭代地转储符号的内存内容的函数。我需要编写一个插件来转储我的一个类似向量的结构。
谢谢