我使用Microsoft的DbgEng制作了一个独立的deubugger应用。
我想打开第二个线程,该线程将命令发送到其他IDebugControl实例,并且我想获取此IDebugControl Execute方法调用的特定输出(并通过tcp连接发送它)。
我有一个问题,因为来自主线程的IDebugControl还向Execute()发送命令,并且输出可能混合在一起。
我需要第二个线程,因为一旦执行了“g”(执行)之类的命令,它将调用WaitForEvent(),直到事件发生,我才能获得有关目标的任何更多信息。
我需要一个解决方案。
第二个IDebugControl用于仅发送数据请求的操作,例如反汇编行,内存转储...
我想知道是否可以创建第二个IDebugClient并将其附加到已打开的调试进程中,然后问题就解决了,因为我可以向其添加其他回调了。
我有解决方案吗?
最佳答案
我认为您在等待除IDebugControl::SetInterrupt以外的事件时,不应调用任何命令来调试引擎。
如果仍然要使用两个线程,则可以注册IDebugOutputCallbacks回调接口(interface)并使用任何互斥量处理输出。