【发布时间】:2009-06-04 21:10:16
【问题描述】:
我在 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 那样迭代地转储符号的内存内容的函数。我需要编写一个插件来转储我的一个矢量结构。
谢谢
【问题讨论】: