我用微软的DbgEng做了一个独立的调试器应用。我想打开第二个线程,将命令发送到另一个IDebugControl实例,并获取此IDebugControl Execute方法调用的特定输出(并通过tcp连接发送它)。
我有一个问题,因为来自主线程的IDebugControl也发送命令给Execute(),并且输出可能是混合的。我需要第二个线程,因为一旦它执行像"g“(go)这样的命令,它将调用WaitForEvent(),在事件发生之前,我将无法获得有关目标的任何进一步信息。
我需要一个解决方案。
第二个IDebugControl用于仅发送数据请求的操作,如反汇编行、内存转储……我想知道我是否可以创建第二个IDebugClient,并将其附加到已经打开的已调试进程中,然后问题就解决了,因为我可以向它添加其他回调。
对我来说有解决方案吗?
发布于 2014-08-26 15:07:22
我认为除了IDebugControl::SetInterrupt之外,您不应该在引擎等待事件时调用任何命令来调试引擎。
如果您无论如何都想使用两个线程,您可以注册IDebugOutputCallbacks回调接口,并使用任何类型互斥锁处理输出。
https://stackoverflow.com/questions/25462378
复制相似问题