Как я могу выполнять команды параллельно в скрипте windbg? - PullRequest
0 голосов
/ 30 октября 2018

У меня есть скрипт windbg, написанный на JavaScript, который получает все таблицы методов из дампа памяти. Как я могу выполнить ExecuteCommand асинхронно, чтобы они происходили параллельно? Ток для цикла занимает два часа! (У нас огромное приложение)

Я пробовал обещания, но они их не поддерживают. Я попробовал yield, но, похоже, все равно прошло два часа, как будто ExecuteCommand блокирует. Любая помощь приветствуется! Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

ИМХО это невозможно напрямую.

Однако вы можете попробовать подход «разделяй и властвуй» и одновременно открывать x дампов, выполняя 1 / x th команд на каждом дамп и агрегирование результатов.

Это должно быть выполнимо, если у вас есть шанс разделить команды.

Примеры:

  • вместо x *!* вы можете запустить команду x *!a*, x *!b* и т. Д. Для 26 дампов параллельно.
  • вместо !for_each_thread "command" вы можете запустить command на столько дампов, сколько имеется потоков в дампе.
0 голосов
/ 30 октября 2018

К сожалению, большая часть механизма отладки по своей сути однопоточная. Не существует способа выполнять несколько команд параллельно. Мост ExecuteCommand делает, по определению, «блок» до завершения команды, поскольку он будет захватывать весь вывод отладчика во время выполнения этой команды и возвращать его вызывающей стороне в виде массива строк.

...