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