Назад | Перейти на главную страницу

Анализ аварийного дампа

Надеюсь, это не глупый вопрос, а если это так, то я хочу по крайней мере покончить с этим, чтобы в будущем я не чувствовал себя таким глупым.

Вот и мы загружаем аварийный дамп Windows с помощью Windbg. Вот несколько первых строк вывода отладчика:

0: kd> .dumpdebug
----- 64 bit Kernel Summary Dump Analysis
DUMP_HEADER64:
MajorVersion 0000000f
MinorVersion 00001db1
...

MinorVersion я в основном понимаю. Он шестнадцатеричный, а в десятичном переводится как 7601. Администраторы Windows уже могли бы сказать из этого, что это должна быть машина Win7 x64 или машина 2k8 R2 с SP1. Но разве 7601 не номер сборки? Это должен быть Major.Minor.Build/Revision ... верно?

Также я не понимаю MajorVersion. Это должно быть 6. Эта версия Windows - 6. Но разве 0000000f в шестнадцатеричном формате не 15 в десятичном?

Строка полной версии этой версии Windows, например, при запуске командной строки - 6.1.7601. Если 7601 - MinorVersion, то что 1, а что 6? И почему в аварийном дампе написано 0F?

Частичный ответ:

В MinorVersion действительно относится к номеру сборки, и если вы готовы злоупотреблять старыми машинами / ОС, вы можете проверить это на разных платформах, сопоставив номер сборки (например) некоторых блоков XP и 2003 с MinorVersion в dump_header.

Вы, вероятно, также заметили (или, по крайней мере, я), что MajorVersion в этих файлах отладки дампа также 0000000f, несмотря на другую версию ядра. Итак, это явно не относится к версии ядра ... или, по крайней мере, не правильно. Что касается того, к чему это относится ... ну, определенно не глупый вопрос, хотя у меня нет на него ответа. Все же.

Обновить:

Нашел что-то очень раздражающее.

В Windows 2000 и Windows NT 4 MajorVersion в файле отладки дампа есть free system. И значение этого поля кажется недокументированным, хотя free system это то, что показано во всех примерах дампов, которые я видел от Microsoft, например, в Комплект ресурсов NT Workstation, и даже КБ о том, как использовать dumpchk.exe это относится к системам 2008 и Windows 7.

Начинает казаться, что это бессмысленно или ошибка? По крайней мере, это не так 0xB16B00B5 или 0x0B00B135 в это время.