Как мне проанализировать BSOD и информацию об ошибке, которую он мне предоставит?

Ну, к счастью, я не написал много приложений, которые вызывают BSOD, но я просто удивляюсь полезности информации на этом экране. Содержит ли она полезную информацию, которая может помочь мне найти ошибку в моем коде? Если да, то что мне нужно, точно?

Затем система перезагружается и, вероятно, записывает в систему какой-либо журнал ошибок или другую информацию. Где это, что в нем содержится и как я могу использовать его для улучшения своего кода?

В прошлом я регулярно получал BSOD, когда взаимодействовал с системой УАТС, в которой просто отсутствовало количество документации по ее драйверам, поэтому мне пришлось делать некоторое пробное кодирование. К счастью, сейчас я работаю в другой компании и не вижу никаких BSOD в результате моего кода.

2 ответа

Решение

Если вы хотите довольно простой способ выяснить причину сбоя ОС, которая будет работать ~90% времени - при условии, что у вас есть аварийный дамп, - попробуйте следующее:

  • Загрузите WinDbg как часть пакета средств отладки для Windows
  • Запустите WinDbg
  • Выберите "Открыть Crash Dump" из меню файла
  • Когда файл дампа загрузится, наберите "analysis -v" и нажмите enter
  • WinDbg выполнит автоматический анализ сбоя и предоставит огромное количество информации о состоянии системы в момент сбоя. Обычно он может сказать вам, какой модуль был неисправен и какой тип ошибки вызвал сбой. Вы также должны получить трассировку стека, которая может или не может быть полезной для вас.

Обратите внимание, что вам нужно будет настроить символы в WinDbg, если вы хотите, чтобы трассировка стека давала вам имена функций.

Если автоматизированного анализа недостаточно, WinDbg предоставляет множество команд, позволяющих вам точно определить, что происходило во время сбоя. Файл справки - хорошее место для начала в этом сценарии.

Вообще говоря, вы не можете вызвать сбой ОС или проверку ошибок из кода вашего приложения. Тем не менее, если вы ищете общие советы и прочее, я рекомендую блог NTDebugging. Большая часть вещей лежит у меня над головой.

Когда происходит сбой ОС, она записывает файл дампа ядра, в зависимости от текущих флагов и т. Д., Вы получаете более или менее информацию в нем. Вы можете загрузить файл дампа в windbg или в другой отладчик. Windbg имеет полезное !analyze команда, которая проверит файл дампа и даст подсказки о ведре, в которое упал сбой, и возможных виновниках. Также проверьте документацию windbg об общей причине проверки ошибок и о том, что вы можете сделать для ее устранения.

Другие вопросы по тегам