我有一个用JavaScript编写的windbg脚本,该脚本从内存转储中获取所有方法表。我如何异步发出ExecuteCommand以便它们并行发生?当前的for循环需要两个小时! (我们有一个庞大的应用程序)
我尝试了诺言,但它不支持诺言。我尝试了yield,但好像仍然需要两个小时,好像ExecuteCommand正在阻塞。任何帮助表示赞赏!谢谢!
答案 0 :(得分:1)
不幸的是,许多调试引擎本质上是单线程的。无法并行执行多个命令。根据定义,ExecuteCommand桥会一直“阻塞”直到命令完成,因为它将捕获该命令执行期间的所有调试器输出,并将其作为字符串数组返回给调用方。
答案 1 :(得分:0)
恕我直言,这不可能直接实现。
但是,您可以尝试分而治之的方法,并同时打开 x 转储,运行 1 / x th 每个转储上的命令并汇总结果。
如果您有机会拆分命令,这应该是可行的。
示例:
x *!*
,x *!a*
等命令,而不是x *!b*
。!for_each_thread "command"
而不是command
,因为转储中有线程。