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

How can I execute commands in parallel in a windbg script?

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

我试过 promises 但它不支持它们。我试过 yield 但它似乎仍然需要两个小时,就好像 ExecuteCommand 正在阻塞一样。任何帮助表示赞赏!谢谢!

不幸的是,大部分调试引擎本质上都是单线程的。没有办法并行执行多个命令。根据定义,ExecuteCommand 桥会 "block" 直到命令完成,因为它将在执行该命令期间捕获所有调试器输出,并 return 将其作为字符串数组返回给调用者。

恕我直言,这是不可能的。

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

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

示例:

  • 而不是 x *!* 你可以 运行 命令 x *!a*x *!b* 等在 26 个并行转储上。
  • 而不是 !for_each_thread "command" 你可以 运行 command 在转储中有多少线程就多少转储。