Получение списка сторонних модулей с Windbg?

Я использую windbg для проверки некоторых аварийных дампов, отправленных приложением. Кажется, существует некоторая корреляция между сбоем, который я наблюдаю, и загрузкой в ​​процесс какой-то сторонней DLL-библиотеки (я подозреваю, что это нестабильный LSP Winsock). Чтобы упростить такой анализ в будущем, есть ли скрипт windbg, который просто покажет мне список модулей, не принадлежащих Microsoft? Это сделало бы паттерны между сбоями более очевидными для меня. Я использую «lm D sm», но сейчас мне нужно пройтись по списку вручную.

Спасибо!

14.12.2008 17:38:55
5 ОТВЕТОВ

Вы можете использовать cdb для сценария отладчика, и он просто печатает в stdout - откройте аварийный дамп, распечатайте список загруженных модулей и выйдите из него, затем вы можете использовать свой любимый инструмент для работы с текстом (подсказка: его имя Perl;)) искать в списке.

РЕДАКТИРОВАТЬ: просто чтобы добавить дополнительную информацию, cdb является версия WinDbg для командной строки; они оба используют один и тот же движок, это просто другой интерфейс.

1
14.12.2008 19:54:37

Я не уверен, что понимаю, почему вы хотите это сделать, но вы можете вывести из WinDbg в журнал и сопоставить со списком DLL. Это довольно легко сделать на любом языке сценариев, таких как Perl, Python и т. Д.

0
14.12.2008 19:25:05

Попробуйте использовать «lm e», указав путь символов на сервере символов Microsoft (и только с загруженными символами MS). Это приведет к тому, что WinDbg отобразит список всех модулей с любым видом символов «проблема», включая модули, которые не были загружены.

Ключи к созданию этой работы:

  1. Симпат настроен только на использование хранилища символов MS (для этого используйте «.symfix»)
  2. Символы были загружены с использованием вышеуказанного сочувствия

Оттуда вы можете добавить другие параметры для «lm», чтобы получить информацию, такую ​​как полный путь и т. Д.

3
22.12.2008 20:23:50

Теперь я могу запустить sos.dll из каталога CLR10 из раздела «Средства отладки для Windows».

.load clr10\sos
!sam c:\temp\modules

Я открываю каталог c: \ temp \ modules в проводнике Windows. Я щелкаю правой кнопкой мыши в столбце Заголовок и добавляю столбец для Компании. Затем я сортирую компанию и перемещаю библиотеки DLL с компанией Microsoft Corporation в отдельный подкаталог Microsoft.

Независимо от того, какие DLL остаются в Каталоге, они обычно являются сторонним или разработанным пользователем кодом.

Спасибо Аарон

0
21.02.2009 22:19:44

Я написал небольшое приложение командной строки, чтобы решить именно эту проблему некоторое время назад.

http://www.sleep1000.com/software/dumpmod

0
26.07.2009 19:27:28