1

我使用 Microsoft 的 DbgEng 制作了一个独立的调试器应用程序。我想打开一个将命令发送到另一个 IDebugControl 实例的第二个线程,并且我想获取此 IDebugControl Execute 方法调用的特定输出(并通过 tcp 连接发送它)。

我有一个问题,因为来自主线程的 IDebugControl 也将命令发送到 Execute() 并且输出可能是混合的。我需要第二个线程,因为一旦它执行像“g”(go)这样的命令,它将调用 WaitForEvent(),并且在事件发生之前我将无法获得有关目标的任何进一步信息。

我需要一个解决方案。

第二个 IDebugControl 用于只发送数据请求的操作,例如反汇编行、内存转储……我想知道我是否可以制作第二个 IDebugClient 并将其附加到已经打开的调试进程中,然后问题就解决了,因为我可以对其进行其他回调。

有适合我的解决方案吗?

4

1 回答 1

2

我认为您在等待除 IDebugControl::SetInterrupt 之外的事件时不应调用任何命令来调试引擎。

如果您想使用两个线程,您可以注册 IDebugOutputCallbacks 回调接口并使用任何类型的互斥锁处理输出。

于 2014-08-26T07:07:22.067 回答