c++ - DbgEng - 不通过回调获取命令输出

标签 c++ c multithreading windbg dbgeng

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

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

我需要一个解决方案。

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

有适合​​我的解决方案吗?

最佳答案

我认为你不应该在等待事件时调用任何命令来调试引擎,除了 IDebugControl::SetInterrupt。

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

关于c++ - DbgEng - 不通过回调获取命令输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25462378/

相关文章:

c - parC int 除法向上舍入

multithreading - *** 检测到 glibc *** 双重释放或损坏 (fasttop) :

python - 当函数处于事件状态时终止脚本

Ruby 线程与 Watir

c++ - Dlib。如何解决实时的优化约束?地标融合的想法?

c++ - C/C++ : Is this undefined behavior?(二维数组)

c++ - 如何在 MSHTML 中禁用 VML

c - 在函数 c 中使用枚举定义全局变量

c++ - 在有限的内存上对大矩阵进行矩阵运算

C 从文本文件填充数组