如何在windbg脚本中并行执行命令?

时间:2018-10-30 06:11:14

标签: javascript asynchronous windbg

我有一个用JavaScript编写的windbg脚本,该脚本从内存转储中获取所有方法表。我如何异步发出ExecuteCommand以便它们并行发生?当前的for循环需要两个小时! (我们有一个庞大的应用程序)

我尝试了诺言,但它不支持诺言。我尝试了yield,但好像仍然需要两个小时,好像ExecuteCommand正在阻塞。任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:1)

不幸的是,许多调试引擎本质上是单线程的。无法并行执行多个命令。根据定义,ExecuteCommand桥会一直“阻塞”直到命令完成,因为它将捕获该命令执行期间的所有调试器输出,并将其作为字符串数组返回给调用方。

答案 1 :(得分:0)

恕我直言,这不可能直接实现。

但是,您可以尝试分而治之的方法,并同时打开 x 转储,运行 1 / x th 每个转储上的命令并汇总结果。

如果您有机会拆分命令,这应该是可行的。

示例:

  • 您可以在26个转储上并行运行x *!*x *!a*等命令,而不是x *!b*
  • 您可以在所有转储上运行!for_each_thread "command"而不是command,因为转储中有线程。