Автоматизация WinDBG или иное извлечение информации из файлов дампа? - PullRequest
4 голосов
/ 25 января 2012

Допустим, у меня есть дамп памяти процесса.Я хочу запустить отчет по нему, поэтому по сути я хочу открыть WinDBG, загрузить SOS и запустить скрипт, который запускает некоторые команды, анализирует вывод и затем запускает еще несколько команд, основанных на этом.такие вещи, как SendKeys, есть ли способ автоматизировать / сценарий этого процесса?Или я могу написать свой собственный инструмент поверх SOS.dll / что угодно?

Ответы [ 2 ]

5 голосов
/ 25 января 2012

Лучший способ сделать это - использовать приложение на основе DbgEng. По сути, это служит заменой WinDBG, который на самом деле представляет собой просто графический интерфейс, наложенный поверх API-интерфейсов DbgEng. Мы написали один из них, чтобы поддержать Online Crash Analyzer для нашего сайта:

http://www.osronline.com/page.cfm?name=analyze

Это действительно дает вам максимальную гибкость, чтобы делать все, что вы хотите с файлом дампа. Пример такого типа приложения предоставляется с WinDBG в каталоге \ sdk \ samples \ dumpstk.

Что касается их реализации, я написал небольшую вступительную статью о DbgEng здесь:

http://www.osronline.com/article.cfm?article=559

Он направлен на использование DbgEng для записи библиотеки DLL расширения в WinDBG, хотя концепции для одинакового приложения одинаковы.

В качестве альтернативы вы можете попробовать написать скрипт или расширение, которое вы выполняете как часть командной строки WinDBG (см. Параметр командной строки "-c"). Это, вероятно, легче начать, хотя я подозреваю, что в конечном итоге вы будете счастливее, если начнете с DbgEng.

1 голос
/ 25 января 2012

В CLR 4.0 ICorDebug поддерживает чтение файлов дампа, поэтому вы можете использовать mdbg для извлечения хотя бы части необходимой вам информации.

Вы также можете использовать IronPython для написания сценариев для него.

...