Отладка ядра. Сообщение STOP, "синий экран" или прерывание. Символы и деревья символов.
Отладка ядра оказывается исключительно полезным средством, когда все другие методы устранения ошибок STOP не помогли, или когда проблема повторяется часто. В этих случаях отладка предоставляет способ определить, какой именно код драйвера дает сбой, путем перехватывания точного текста сообщения об ошибке.
В первую очередь необходимо определить некоторые общие термины и процедуры, которые потребуются при отладке сообщений ядра STOP.
Сообщение STOP, "синий экран" или прерывание
Когда операционная система Windows NT/2000 сталкивается с аппаратными проблемами, противоречивостью данных, необходимых для ее работы, или иными подобными ошибками, она обрабатывает эту ситуацию на основании информации, введенной в диалоговом окне Загрузка и восстановление.
Если пользователь в этом диалоговом окне не указал опцию Выполнить автоматическую перезагрузку, Windows NT/2000 отображает синий экран, на который выводится информация об ошибке, после чего работа операционной системы останавливается.
В Базе знаний Microsoft и другой документации по Windows NT/2000 это состояние часто называется "синим экраном" (blue screen), ошибкой ядра (kernel STOP error) или программной ловушкой (software trap). Все эти термины используются для обозначения таких состояний операционной системы, когда ядро, обнаружив ошибку, может выполнить запись в файл Дампа памяти (эта процедура может являться частью процесса обработки ошибки).
Символы и деревья символов
Как правило, при компиляции кода могут быть созданы две версии исполняемого файла – отладочная версия (debug version, известная также под названием checked version) и обычная (nodebug или free). Отладочная версия содержит дополнительный код, который позволяет разработчику отлаживать программу. Файл отладочной версии имеет больший размер и исполняется медленнее. Обычная версия исполняемого файла компактнее и исполняется быстрее, но не позволяет осуществлять отладку.
Все исполняемые файлы, DLL, драйверы и другие программы представляют собой обычные (неотладочные) версии. Каждому программному файлу ставится в соответствие символьный файл, который содержит отладочный код. Отладочная версия Windows 2000, а также инструкции по ее установке входят в состав программного продукта Windows 2000 Device Driver Kit (DDK). Отладочная версия находится в подкаталоге Symbols, который содержит подкаталоги для файлов каждого типа (exe, dll, sys). Эта структура называется символьным деревом (symbol tree).
Утилитам, используемым для отладки Windows NT/2000 или для интерпретации файлов дампа памяти, требуется символьное дерево, в котором содержатся символьные файлы соответствующей версии Windows NT/2000 (на момент, когда имеет место ошибка ядра STOP). Некоторые утилиты требуют, чтобы подкаталог \Symbols находился на жестком диске в каталоге %SystemRoot%. Некоторые утилиты допускают указание пути к подкаталогу \Symbols в качестве одной из опций командной строки (в режиме командной строки или в диалоговом окне).
Отладка ядра требует наличия двух компьютеров – так называемого целевого компьютера (target machine) и хост-компьютера (host machine).