Как мне проанализировать BSOD и информацию об ошибке, которую он мне предоставит?
Ну, к счастью, я не написал много приложений, которые вызывают BSOD, но я просто удивляюсь полезности информации на этом экране. Содержит ли она полезную информацию, которая может помочь мне найти ошибку в моем коде? Если да, то что мне нужно, точно?
Затем система перезагружается и, вероятно, записывает в систему какой-либо журнал ошибок или другую информацию. Где это, что в нем содержится и как я могу использовать его для улучшения своего кода?
В прошлом я регулярно получал BSOD, когда взаимодействовал с системой УАТС, в которой просто отсутствовало количество документации по ее драйверам, поэтому мне пришлось делать некоторое пробное кодирование. К счастью, сейчас я работаю в другой компании и не вижу никаких BSOD в результате моего кода.
2 ответа
Если вы хотите довольно простой способ выяснить причину сбоя ОС, которая будет работать ~90% времени - при условии, что у вас есть аварийный дамп, - попробуйте следующее:
- Загрузите WinDbg как часть пакета средств отладки для Windows
- Запустите WinDbg
- Выберите "Открыть Crash Dump" из меню файла
- Когда файл дампа загрузится, наберите "analysis -v" и нажмите enter
- WinDbg выполнит автоматический анализ сбоя и предоставит огромное количество информации о состоянии системы в момент сбоя. Обычно он может сказать вам, какой модуль был неисправен и какой тип ошибки вызвал сбой. Вы также должны получить трассировку стека, которая может или не может быть полезной для вас.
Обратите внимание, что вам нужно будет настроить символы в WinDbg, если вы хотите, чтобы трассировка стека давала вам имена функций.
Если автоматизированного анализа недостаточно, WinDbg предоставляет множество команд, позволяющих вам точно определить, что происходило во время сбоя. Файл справки - хорошее место для начала в этом сценарии.
Вообще говоря, вы не можете вызвать сбой ОС или проверку ошибок из кода вашего приложения. Тем не менее, если вы ищете общие советы и прочее, я рекомендую блог NTDebugging. Большая часть вещей лежит у меня над головой.
Когда происходит сбой ОС, она записывает файл дампа ядра, в зависимости от текущих флагов и т. Д., Вы получаете более или менее информацию в нем. Вы можете загрузить файл дампа в windbg или в другой отладчик. Windbg имеет полезное !analyze
команда, которая проверит файл дампа и даст подсказки о ведре, в которое упал сбой, и возможных виновниках. Также проверьте документацию windbg об общей причине проверки ошибок и о том, что вы можете сделать для ее устранения.