Получение списка сторонних модулей с Windbg? - PullRequest
2 голосов
/ 14 декабря 2008

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

Спасибо!

Ответы [ 5 ]

3 голосов
/ 22 декабря 2008

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

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

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

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

1 голос
/ 14 декабря 2008

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

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

0 голосов
/ 26 июля 2009

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

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

0 голосов
/ 22 февраля 2009

Способ, которым я делаю это сейчас, заключается в том, что я запускаю sos.dll из каталога CLR10 из установки средств отладки для Windows.

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

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

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

Спасибо, Aaron

0 голосов
/ 14 декабря 2008

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

...