【问题标题】:DbgEng - get output of command not through callbacksDbgEng - 不通过回调获取命令输出
【发布时间】:2014-08-23 13:21:17
【问题描述】:

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

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

我需要一个解决方案。

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

有没有适合我的解决方案?

【问题讨论】:

    标签: c++ c multithreading windbg dbgeng


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      相关资源
      最近更新 更多