Как я могу выполнять команды параллельно в скрипте windbg?

1

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

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

Теги:
asynchronous
windbg

2 ответа

0
Лучший ответ

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

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

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

Примеры:

  • вместо x *!* вы можете запускать команду x *!a*, x *!b* и т.д. на 26 свалки параллельно.
  • вместо команды !for_each_thread "command" вы можете запустить command на столько дампов, сколько есть потоков в дампе.
1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню