BlueScreenView
По умолчанию она ищет дампы в папке %systemroot%\Minidump, но можно настроить и собственную папку (Options –> Advanced). Для найденных драйверов утилита отображает:
- В
верхней панели – название файла, дату создания, название стоп-ошибки,
код ошибки, параметры, а также драйвер, предположительно вызвавший
проблему (Caused By Driver).
- В нижней панели – (в зависимости от настроек в Options –> Lower Pane Mode)
все драйверы, загруженные во время ошибки, или только драйверы,
найденные в стеке. Среди всех драйверов - на розовом фоне отображаются
предположительно вызвавшие проблему драйверы. Также, утилита может
отображать синий экран, очень похожий на тот, который все так любят.
Важно! Я должен отметить, что при определении драйвера не нужно полагаться только на имя файла в столбце Caused by Driver.
Следует рассмотреть драйверы в нижней панели (или только выделенные
розовым цветом, если включено отображение всех драйверов), в первую
очередь обращая внимание на несистемные драйверы.
Утилита очень
быстро работает, а также обладает дополнительными возможностями по
копированию отдельных строк и созданию HTML-отчетов.
BlueScreenView vs. kdfe.cmd / WinDbg
В приведенном выше скриншоте виновником проблемы являлся не USBPORT.SYS (системный драйвер), aclaudsl.sys (драйвер модема). Именно на последний указал анализ kdfe,
полагающeгося на Debugging Tools for Windows. И тут я перехожу к
вопросу, насколько корректен анализ утилиты по сравнению с kdfe /
WinDbg.
Честно говоря, я не являюсь экспертом по отладке, но
одно очевидно сразу: в отличие от WinDbg, BlueScreenView не использует
для анализа символы, загружаемые с сайта Microsoft. Я поинтересовался у
автора программы, насколько корректным считает он анализ в этих
условиях. И вот что он ответил (в сокращении):
Вне
зависимости от того, используете вы BlueScreenView или WinDbg с
символами, невозможно достичь абсолютной точности в определении
драйвера.
Я не думаю, что символы помогли бы моей утилите
произвести более точный анализ. В символах содержится дополнительная
информация, которая может помочь профессионалам определить точную
причину - например, функцию внутри драйвера, вызвавшую ошибку. Однако
определение драйверов, вовлеченных в ошибку, может быть выполнено на
основе адресов памяти без всяких символов.
Я решил проверить, насколько результаты BlueScreenView совпадают с kdfe. Поскольку в материале
нет недостатка, я взял навскидку полтора десятка дампов с наиболее
распространенными кодами (0x8E, 0x50, 0xD1 и 0x0A). Лишь в одном случае
результаты отличались – BlueScreenView указала на системный драйвер, а
kdfe – на драйвер Outpost Firewall. Тестирование также выявило, что
далеко не всегда BlueScreenView верно указывает на проблемный драйвер в
верхней панели, но во всех случаях кроме одного, оговоренного выше,
проблемный драйвер был обозначен в нижней панели. Таким образом, kdfe
понятнее указывает на проблемный драйвер. Однако наблюдалась и обратная
картина – иногда kdfe однозначно указывает на системный драйвер, в то
время как BlueScreenView выделяет еще и несистемные, которые также
могут оказаться причиной проблемы.
Резюме
Я
вполне могу порекомендовать BlueScreenView для быстрого анализа дампов
памяти, создающихся при BSOD. Однако утилита не всегда однозначно
указывает на проблемный драйвер в верхней панели. Поэтому, вместо того
чтобы любоваться в нижней панели картинкой синего экрана, лучше
включить для нее отображение драйверов и изучить их список. В
неочевидных случаях лучше также провести анализ с kdfe, а для глубокого анализа без WinDbg все равно не обойтись.