У меня есть сценарий windbg, написанный на JavaScript, который получает все таблицы методов из дампа памяти. Как я могу выдать ExecuteCommand асинхронно, чтобы они происходили параллельно? Ток для цикла занимает два часа! (У нас огромное огромное приложение)
Я пробовал обещания, но он их не поддерживает. Я пробовал работать, но, похоже, все еще занимает два часа, как будто ExecuteCommand блокирует. Любая помощь приветствуется! Спасибо!
ИМХО это невозможно напрямую.
Тем не менее, вы можете попробовать подход с разделением и покорением и одновременно открыть x дампов, запустить 1/x th команд на каждом дампе и агрегировать результаты.
Это должно быть осуществимо, если у вас есть шанс разделить команды.
Примеры:
x *!*
вы можете запускать команду x *!a*
, x *!b*
и т.д. на 26 свалки параллельно.!for_each_thread "command"
вы можете запустить command
на столько дампов, сколько есть потоков в дампе.К сожалению, большая часть отладочного движка по своей сути однопоточная. Невозможно параллельно выполнять несколько команд. Мост ExecuteCommand по определению "блокирует" до завершения команды, поскольку он будет захватывать весь вывод отладчика во время выполнения этой команды и возвращать его обратно вызывающему в качестве массива строк.