Сообщения Windows 2000 и отладчик

  1. Глава  Планирование и установка системы Windows 2000
  2. Глава  Загрузка операционной системы
  3. Глава  Поддержка оборудования
  4. Глава  Пользовательский интерфейс
  5. Глава  Конфигурирование системы
  6. Глава  Средства управления
  7. Глава  Диски и файловые системы
  8. Глава  Восстановление системы
  9. Глава  Работа с дисковыми ресурсами
  10. Глава  Службы печати
  11. Глава  Типовые задачи администрирования
  12. Глава  Нулевое администрирование Windows (ZAW)
  13. Глава  Средства мониторинга и оптимизации
  14. Глава  Работа с системным реестром
  15. Глава  Сообщения Windows 2000 и отладчик
  16. Глава  Сеть и удаленный доступ к сети
  17. Глава  Серверы DHCP, DNS и WINS
  18. Глава  Дополнительные сетевые службы
  19. Глава  Коммуникационные службы
  20. Глава  Маршрутизация
  21. Глава  Работа с Интернетом и электронной почтой
  22. Глава  Службы Интернета в Windows 2000
  23. Глава  Основные концепции службы Active Directory
  24. Глава  Проектирование доменов и развертывание Active Directory
  25. Глава  Администрирование доменов
  26. Глава  Средства безопасности Windows 2000
  27. Глава  Групповые политики
  28. Строительная компания ЧАО Криворожаглострой
  29. Карта сайта zao-kas.com.ua

Глава 15

Сообщения Windows 2000 и отладчик

Поговорим о грустном... чтобы, столкнувшись с неприятной неожиданностью — "синим экраном смерти", вы не погрустнели вдвойне. Возможно, вы уже достаточно хорошо знакомы с Windows 2000, но во время работы еще не попадали в такую ситуацию. Хотя эта система и надежнее предыдущих версий Windows NT, это не значит, что "синий экран смерти" — следствие серьезных ошибок — не возникнет никогда. Если даже такие ошибки и не появятся, вы все равно должны быть готовы устранить их! | | |

 

"Синий экран" и Windows 2000

Итак, "синий экран" можно увидеть и в Windows 2000. Когда система выявляет серьезную ошибку, которую не может устранить самостоятельно, она, в зависимости от типа ошибки, генерирует соответствующие системные сообщения, которые и известны под собирательным названием "синий экран". В этом разделе мы рассмотрим основные причины возникновения таких ошибок в Windows 2000 и классифицируем их по типам.

Как и в Windows NT, исполняющая подсистема Windows 2000 (модуль Executive) представляет собой часть операционной системы, работающую в режиме ядра. Режим ядра (kernel mode) — это привилегированный режим работы процессора, в котором поток (thread) имеет доступ к системной памяти и к аппаратным средствам. Режимом пользователя (user mode) называется непривилегированный режим работы процессора, выполняясь в котором поток не имеет прямого доступа к системной памяти и аппаратным средствам, для получения такого доступа он должен обратиться к сервисам операционной системы. Модуль Executive обеспечивает структуру процессов, диспетчеризацию потоков, межпроцессную коммуникацию, управление памятью, управление объектами, безопасность и защиту объектов, обработку прерываний и ввод/вывод.

Ядро Windows NT/2000 представляет собой часть модуля Executive, управляющую процессором. Ядро выполняет диспетчеризацию потоков, обработку исключении и прерываний, а также мультипроцессорную синхронизацию. Кроме того ядро, ядро поставляет модулю Executive объекты-примитивы, из которых он создает объекты режима пользователя.

Итак, существуют два типа системных сообщений Windows 2000:

Сообщения;STOP. Генерируются в символьном режиме и появляются, когда ядро Windows 2000 выявит противоречивое состояние, из которого оно не способно выйти самостоятельно.

Сообщения о неисправности аппаратуры (Hardware malfunction messages). Как и сообщения STOP, эти сообщения также генерируются в символьном режиме. Их появление указывает на то, что система обнаружила аппаратную ошибку, после которой продолжение работы невозможно.

Практически для каждой ситуации, делающей невозможным продолжение работы системе Windows 2000 предусмотрены соответствующие сообщения. Как правило, для диагностики сообщений Windows 2000 и устранения причин, вызвавших их появление большинству пользователей требуется техническая поддержка. Однако системный администратор должен иметь навыки устранения последствий аппаратных сбоев и уметь интерпретировать сообщения STOP.

 

Экран сообщения STOP

Как уже говорилось, сообщения STOP появляются, когда ядро Windows 2000 выявляет противоречивое состояние, из которого оно не может выйти самостоятельно. Такие сообщения всегда, отображаются в полноэкранном текстовом режиме, а не в окне Windows (рис. 15.11)- Каждое такое сообщение уникальным образом определяется шестнадцатеричным числом и символьной строкой, идентифицирующими возникшую ошибку. Кроме того, за шестнадцатеричным числом, идентифицирующим сообщение STOP, как правило, следуют заключенные в круглые скобки шестнадцатеричные числа, каждое из которых указывает один из параметров возникшей ошибки! Число таких параметров может достигать четырех, как показано в примере:

**** STOP: ОХ0000001Ё (OxCOOOOOOS, OxE±>E38AF9, 0x00000001, Ох7Е8ВОЕВ4) KMODE_EXCEPTtON_NOT_HANDLED * * *

По символьной строке, идентифицирующей ошибку, можно предположительно определить, какой из компонентов системы был затронут ошибкой,

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

Рис. 15.1. Пример экрана сообщения STOP

 

Составные части сообщения STOP

В отличие от предыдущих версий Windows NT, где экран сообщения STOP состоит из пяти основных частей, экран сообщения STOP в Windows 2000 (рис. 15.1) содержит только три части:

Информация кода ошибки (bugcheck information)

Рекомендации пользователю (recommended user action)

Информация отладочного порта (debug port information)

При появлении сообщения STOP рекомендуется в первую очередь ознакомиться с информацией кода ошибки, помогающей ее устранить. Одно из важных нововведений в Windows 2000 — теперь сообщения STOP включают рекомендации пользователю по устранению ошибок. Наконец, третья часть экрана сообщения STOP содержит информацию о сохранении отладочного дампа памяти, который впоследствии может быть использован отладчиком ядра.

 

Информация кода ошибки

Первый раздел экрана сообщения STOP называется разделом информации кода ошибки (bugcheck information section). Он содержит код ошибки STOP (STOP code), за которым может следовать до четырех заключенных в скобки параметров, определенных разработчиком, а также символьное имя ошибки.

На рис. 15.1 показан экран с кодом ошибки 0x000000IE (символьное имя KMODE_EXCEPTION_NOT_HANDLED).

Часто (но не всегда) в разделе информации кода ошибки содержится строка указывающая адрес памяти, по которому возникла проблема (в шестнадцатеричном формате), а также имя драйвера или устройства, явившегося причиной ошибки. Эта, информация появляется или не появляется в зависимости от типа возникшей проблемы.

Примечание

Иногда ядро Windowr 2000 отображает только первую строку сообщения STOP Это происходит в случаях, когда возникшая ошибка повлияла даже на системные сервисы, ответственные за вывод сообщения STOP.

 

Рекомендации пользователю

Этот раздел "синего экрана", следующий за информацией кода ошибки содержит рекомендации, следуя которым, пользователь может устранить возникшую проблему. В ряде случаев проблема может бить устранена простой перезагрузкой. Однако если "синий экран смерти" появляется постоянно то, скорее всего, вам придется проводить восстановительные работы (см. главу 8.)

 

Информация отладочного порта

Наконец, последний раздел сообщения STOP - это раздел информации отладочного порта (debug port information). В этом разделе содержится информация о коммуникационных параметрах (СОМ-порт и скорость передачи данных на компьютер, с которого будет производиться отладка) Эта ин-4к”рмация выводится, если в системе активизирован отладчик ядра (kernel debugger). Помимо этого, в данном разделе приводится информация о сохранении файла дампа памяти (если эта функция активизирована).

 

Подготовка к устранению проблем

Прежде чем приступать к классификации ошибок STOP и обсуждению методов их устранения, необходимо обсудить подготовительные шаги которые помогут ускорить восстановление системы в том случае, если вы все же столкнетесь с проблемой "синего экрана".

Причиной возникновения многих ошибок STOP может быть перезапись системного файла или некорректно работающий драйвер. При этом как правило, ничего не подозревающий пользователь сам создает проблему устанавливая программное обеспечение или драйверы, не совместимые с операционной системой Эта проблема существовала во всех предыдущих версиях Windows NT. В Windows 2000 введены дополнительные средства защиты системных файлов и драйверов с помощью цифровой подписи,

которая гарантирует их совместимость и корректную работу в Windows 2000.-Во избежание возникновения проблем рекомендуется Пользоваться этими средствами, подробно описанными в главе 8. Так вы существенно снизите риск появления ошибок STOP.

Если даже вы сами никогда не будете выяснять причину возникновения ошибки — предположим, за вас это сделает специалист службы технической поддержки, — рекомендуется хотя бы сконфигурировать систему так, чтобы облегчить ему эту задачу. Вызовите утилиту Система (System) на панели управления, в раскрывшемся диалоговом окне Свойства системы (System Properties) перейдите на вкладку Дополнительно (Advanced) и нажмите кнопку Загрузка и восстановление (Startup and Recovery). На экране появится окно Загрузка и восстановление (рис. 15.2).

 

Рис. 15.2. Диалоговое окно Загрузка и восстановление (Startup and Recovery)

Группа Загрузка операционной системы (System startup), расположенная в верхней части окна, позволяет задать операционную систему, загружаемую по умолчанию (в случае, когда на компьютере установлено несколько операционных систем), и временной интервал, в течение которого на экране будет отображаться меню загрузки.

Группа, которая интересует нас в данном случае — Отказ системы (System Failure). Она позволяет определить поведение системы в случае возникновения ошибок STOP. Рассмотрим ее опции более подробно. Системный журнал событий Windows 2000 - хороший источник информации, помогающей выяснить причину возникновения ошибки. Именно по-

этому в любом случае рекомендуется установить флажок Записать событие в системный журнал (Write an event to the system log) — тогда при каждом возникновении ошибки STOP в системном журнале событий будет делаться соответствующая запись. Пример такой записи приведен ниже:

Event ID: :1001 Source: Save Dump Description: The computer has rebooted from a bugcheck. The bugcheck was : 0xc000021a (0xel270188, 0x00000001, ,0x00000000, 0x00000000). Microsoft Windows NT (v15.1381). A dump was saved in: C:\WINNT\MEMORY.DMP.

Если установить флажок Отправить административное оповещение (Send an administrative alert), то в случае возникновения ошибки STOP на компьютер сетевого администратора будет отправляться административное уведомление.

Наконец, если компьютер, на котором происходит такая ошибка, необходимо как можно скорее привести в рабочее состояние, возможно, вы захотите, чтобы он автоматически перезагружался в случае возникновения ошибок STOP. Для этого установите флажок Выполнить автоматическую перезагрузку (Automatically reboot).

Если ошибки, приводящие к появлению "синего экрана", появляются систематически, то наилучшим источником информации о причине их возникновения будет отладочный дамп. Для конфигурирования системы таким образом, чтобы при ее крахе содержимое физической памяти записывалось в файл на жестком диске, используются опции группы Запись отладочной информации (Write Debugging Information). Поле Файл дампа памяти (Dump File) предназначено для ввода имени файла, в который будет сбрасываться эта информация, а установленный флажок Затирать существующий файл (Overwrite any existing file) определяет, что содержимое существующего файла дампа каждый раз будет замещаться новой информацией. Эти опции используются так же, как и в предыдущих версиях Windows NT.

Однако Windows 2000 предлагает и усовершенствование по сравнению с Windows NT 4.0 при сохранении отладочного дампа. Если у вас есть опыт работы с предыдущими версиями Windows NT, вы наверняка помните, что в Windows NT 4.0 в отладочный дамп можно было записать только содержимое физической памяти компьютера. Объем файла, который при этом генерирует система, всегда несколько больше, нежели объем физической памяти, установленной на компьютере, и при этом значительная часть данных в файле дампа практически бесполезна. Как в Windows NT 4.0, так и в Windows 2000 ошибки STOP представляют собой ошибки ядра. Следовательно, именно информация ядра (состояние системы на момент возникновения ошибки, сведения об активных приложениях, загруженных драйверах устройств и т. д.) и представляет практический интерес при анализе дампа. Данные о режиме пользователя обычно просто увеличивают размер файла дампа и не предоставляют полезной информации.

Именно поэтому в Windows 2000 в диалоговом окне Загрузка и восстановление появилась новая опция, позволяющая регулировать размер файла аварийного дампа. Первый список в группе Запись отладочной информации позволяет выбрать режим сохранения дампа. Наряду с возможностью сохранения полного дампа (как в Windows NT 4.0) в нем есть опция Дамп памяти ядра (Kernel Memory Dump)^ при выборе которой в файле дампа будет сохранена только информация ядра. Средства анализа аварийного дампа; совместимые с Windows 2000, в том числе dumpexam и WinDbg, будут интерпретировать этот файл корректно. Экономия дискового пространства, которой можно добиться, выбрав эту опцию, может отличаться в разных системах (и даже зависеть от типа возникающих ошибок). Тем не менее, на основании практического опыта авторов можно сказать, что на компьютерах с объемом оперативной памяти 128 Мбайт полный дамп составит чуть более 128 Мбайт, а дамп ядра — около 40 Мбайт.

 

Типы сообщений STOP

Сообщения STOP можно классифицировать по следующим категориям:

Сообщения, появляющиеся в процессе работы Windows 2000

Сообщения, появляющиеся во время установки Windows 2000

Сообщения, появляющиеся в процессе загрузки Windows 2000

Сообщения, вызванные программными ловушками (software trap)

 

Сообщения STOP, появляющиеся в процессе работы с Windows 2000

Наиболее распространенные сообщения STOP генерируются во время выполнения стандартных повседневных операций. Даже в такой отказоустойчивой операционной системе, как Windows NT/2000, иногда происходит зависание системы с невозможностью продолжения работы, и появляется "синий экран" (сообщение STOP). В Windows NT/2000 появление сообщения STOP может быть вызвано необрабатываемым исключением (unhandled exception) в коде драйвера или файловой системы или выполнением недопустимой инструкции.

Примечание

Подробный список сообщений STOP, которые могут возникнуть а процессе работы с Windows 2000, а также информация об их диагностике и устранении, приведены в Microsoft Knowledge Base в статье Q103059 "Descriptions of Bug Codes for Windows 2000".

 

Сообщения STOP, появляющиеся в процессе установки Windows 2000

Одним из вероятных вариантов исхода неудачной попытки установки Windows 2000 может быть появление сообщения STOP. Если это произойдет, в первую очередь проверьте все периферийные устройства компьютера на

совместимость с Windows 2000. Для этого возьмите последнюю версию списка совместимых аппаратных средств Windows 2000 (HCL). Все компьютеры и устройства, включенные в этот список, тестировались Microsoft в жестких условиях и были признаны совместимыми с Windows 2000. Список совместимости постоянно обновляется по мере того, как тестирование проходят все новые и новые устройства; его последнюю версию всегда можно найти на веб-сервере Microsoft.

Если используемое вами устройство не указано в HCL, обратитесь к поставщику устройства, т. к. только он может предоставить информацию о вновь тестируемых аппаратных средствах и/или доступных обновлениях BIOS. Кроме того, это сотрудничество позволит свести к минимуму трудозатраты при выявлении конфликтов инсталляции.

 

Сообщения STOP, появляющиеся при инициализации исполняющей подсистемы (Executive)

Некоторые из сообщений STOP могут появляться только в течение относительно краткого периода инициализации модуля Executive (это — четвертая фаза загрузки Windows 2000). Исполняющая подсистема Windows 2000 (Windows 2000 Executive) — это набор программных компонентов, предоставляющих базовые сервисы операционной системы. Как и при загрузке Windows NT 4.0, загрузку модуля Executive можно разделить на два этапа (этап 0 и этап 1). Во время этапа 0 прерывания блокированы, инициализированы лишь немногие компоненты модуля Executive, такие как уровень аппаратных абстракций (HAL). Во время выполнения этапа 1 система становится полностью работоспособной, и все компоненты Windows NT/2000 проходят инициализацию.

Если вы получите одно из сообщений STOP, появляющихся только на этапе 0 инициализации модуля Executive, запустите программу диагностики аппаратных средств, полученную от поставщика аппаратных средств. Сообщения STOP, появление которых возможно только на этапе 0 инициализации модуля Executive, перечислены в табл. 15.1.

Примечание

Аппаратные сбои в Windows 2000 часто проявляются как ошибки, генерирующие сообщения STOP. Если при диагностике аппаратных средств не будет обнаружено никаких проблем, попытайтесь переустановить Windows 2000. Если сообщение появится вновь, обратитесь в службу технической поддержки.

Таблица 15.1. Сообщения STOP, появляющиеся только на этапе инициализации исполняющей подсистемы Windows 2000

Код сообщения

Символическое имя

0x0031

PHASED JNITIALIZATION_FAILED

0x0050 0x0050 0x00SE 0x00SF 0x0060

HAL_INITIALIZATION_FAILED HEAP_INITIALIZATION_F AILED OBJECT_INmALIZATION_FAILED SECURITY_INITIALIZATION_FAILED PROCESS_INITIALIZATION_FAILED

Сообщения STOP, которые могут появиться на этапе 1 инициализации модуля Executive, перечислены в табл. 15.2. Получив одно из таких сообщений, попытайтесь переустановить Windows 2000, и если сообщение появится снова, обратитесь в службу технической поддержки,

Таблица 15.2. Сообщения STOP, Появляющиеся только на этапе 1 инициализации исполняющей подсистемы Windows 2000

Код сообщения

Символическое имя

0x0032

0x0061

0x0062

0x0063

0x0064

0x0065

0x0066

0x0067

0x0068

0x0069

0х006А

0х006В

0х006С

0x0060

0х006Е

0х006Р

0x0070

0x0071

PHASE 1 _INITIALIZATION_FAILED

HAL1_INITIALIZATION_FAILED OBJECT1

_IN1TIALIZATION_FAILED SECURITY1

JNITIALIZATION_FAILED

SYMBOLIC_INITIALIZATION_FAILED

MEMORY1JNITIALIZATION_FAILED

CHEJNITIALIZATION_FAILED CONFIG

JNITIALIZATION_FAILED

FILE_INITIALIZATION_FAILED

IO1_INITIALIZATION_FAILED

LPCJNITIALIZATION_FAILED

PROCESSt_INITiAUZATION_FAILED

REFMONJNITIALIZATION_FAILED

SESSION1_INITIALIZATION_FAILED

SESSION2JNITIALIZAT1ON_FAILED SESSION

JNmAUZATION_FA|LED

SESSION4JNITIALIZATION_FAILED

SESSION5JNITIALIZATION_FAILED

 

Сообщения STOP, вызванные программными прерываниями

Эта группа сообщений STOP вызывается программными (или внутренними) прерываниями, или ловушками (software traps). Такие прерывания появляются при возникновении программных ошибок, после которых нормальное продолжение программы невозможно: например, при наличии в команде недопустимых операндов, при попытке деления на нуль, в случае выхода индекса массива за пределы допустимых значений или при обращении к памяти, находящейся за пределами стека.

Пример первой строки сообщения STOP, отображаемой для подобных сообщений STOP:

*** STOP: 0x0000007F (0x00000000n, 00000000, 00000000, 00000000) UNEXPECTED_KERNEL_MODE_TRAP

Ошибка UNEXPECTED_KERNEL_MODE_TRAP указывает на то, что программная ошибка слишком серьезна и не позволяет продолжать работу. Примерами таких ошибок могут быть, например, деление на ноль или ошибка, возникающая в процессе обработки другой ошибки (так называемая двойная ошибка).

Получив одно из таких сообщений, запишите информацию о коде ошибки STOP и перезагрузите компьютер. Если сообщение появится повторно, для устранения проблемы вы можете принять следующие меры:

Выполнить диагностику проблемы, используя информацию и рекомендации, отображенные на экране сообщения STOP (в разделе рекомендаций пользователю). Дополнительная информация по наиболее распространенным сообщениям STOP, методам диагностики и устранения проблем, вызвавших их появление, приведена в сопроводительной документации к программному продукту Microsoft® Windows® 2000 Resource Kit.

Обратиться в службу технической поддержки.

 

Сообщения, свидетельствующие о неполадках в работе аппаратных средств

Сообщения, свидетельствующие о неполадках в работе аппаратных средств, вызываются тем, что процессор выявляет ошибочные состояния устройств. Первые две строки таких сообщений могут различаться (в зависимости от типа HAL (Hardware Abstraction. Layer), загруженного при запуске системы). Типичный пример первых строк такого сообщения приведен ниже:

Hardware malfunction

Call your hardware vendor for support

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

Примечание

В редких ситуациях сообщения об аппаратном сбое в действительности могут быть вызваны ошибками в программах, в особенности — плохо разработанными драйверами.

 

Рекомендации по устранению ошибок STOP

 

Общая методика

В этом разделе дается общая методика, которой рекомендуется следовать при появлении экранов сообщений STOP, не содержащих конкретных инструкций по устранению возникшей ошибки. Выполняйте эти рекомендации поочередно, приступая к следующему шагу в том случае, если предыдущие не помогли решить проблему. Более подробные инструкции по устранению конкретных ошибок STOP приведены далее в этой главе.

Шаг 1. В первую очередь попробуйте перезагрузить компьютер. В некоторых случаях, если ошибка возникла случайно, этого достаточно. Что делать, если в процессе загрузки Windows 2000 постоянно появляется "синий экран", после чего компьютер автоматически перезагружается, и ошибка появляется снова? Это может происходить, если в процессе подготовки к устранению последствий ошибок STOP вы установите в окне Загрузка и восстановление опцию автоматической перезагрузки компьютера при крахе системы, а ошибка STOP, делающая невозможной дальнейшую работу компьютера, будет возникать вновь и вновь. Легко догадаться, что каждый раз после ее появления компьютер будет перезагружаться, и цикл перезагрузок будет бесконечным. Как же выйти из этого порочного круга и хотя бы получить возможность исследовать, возникающую ошибку, STOP? Данную проблему можно решить, установив на другом разделе жесткого диска этого компьютера еще одну копию Windows 2000 (одна из официальных рекомендаций Microsoft, которая приводится, например, в главах по обеспечению отказоустойчивости системы в продуктах Resource Kit):

1. Загрузите вторую копию Windows 2000, вызовите приложение Regedt32 и перейдите в окно HKEYJLOCALJMACHINE.

2. В меню Реестр (Registry) выберите команду Загрузить куст (Load Hive) и загрузите куст System той копии Windows 2000, в которой возникла проблема (хотя подробная информация о местоположении кустов реестра

приведена в главе 14, напомним, что они располагаются в папке %SystemRoot%\System32\Config).

3. Когда вам будет предложено указать имя для загружаемого куста, введите любую строку, например, oldsystem.

После этого окно HKEY_LOCAL_MACHINE (рис, 15.3) будет содержать список следующих кустов:

  • HARDWARE

  • oldsystem

  • SAM

  • SECURITY

  • SOFTWARE

  • SYSTEM
Рис. 15.3. Окно HKEY_LOCAL_MACHINE после загрузки раздела System из поврежденной копии Windows 2000

 

4. Раскройте куст oldsystem, найдите в составе ключа HKEY_LOCAL_ MACHINE\SYSTEM\Contix)lSetca\Gontrol\CrashControl параметр AutoReboot и установите его значение в 0 (эту операцию надо проделать для всех наборов Con trolSetxxx).

5. Сверните ключ HKEY_LOCAL_Mb\CHINE, выделите куст oldsystem и выберите в меню Реестр команду Выгрузить куст.

Теперь, когда опция автоматической перезагрузки при крахе системы блокирована, вы получили возможность исследовать сообщение STOP.

Предупреждение

При загрузке некоторого куста размер реестра увеличивается и может превысить максимальное допустимое значение. Поэтому перед операцией загрузки рекомендуется проверить текущий размер реестра в окне Виртуальная память (рис. 15.2) и при необходимости увеличить его.

Шаг 2. Если после перезагрузки "синий экран" больше не появляется t то проблема решена (хотя бы временно). Не забудьте после запуска Windows 2000 просмотреть журнал системных событий. (Возможно, именно там вы обнаружите сообщения об ошибках, которые позволят идентифицировать источник проблемы.) Для этого запустите оснастку Просмотр событий (Event Viewer).

Шаг3. Если ошибка STOP появилась при первой же перезагрузке компьютера после установки нового оборудования или Дополнительного программного обеспечения, и вы еще не регистрировались в системе, то попробуйте перезагрузить компьютер, и при появлении списка доступных операционных систем нажмите клавишу <F8>. В появившемся меню выберите опцию Загрузка последней удачной конфигурации (Last Known Good Configuration). Перезагрузка компьютера с использованием последней успешно загруженной конфигурации удалит все конфигурационные изменения, внесенные с момента последней успешной загрузки Windows 2000.

Шаг 4. Если Windows 2000 все же не может нормально стартовать, попробуйте выполнить загрузку в безопасном режиме (safe mode), а затем блокировать или удалить вновь установленные программы и драйверы (подробная информация об опциях отладочного меню, выводимого при загрузке Windows 2000 по нажатии клавиши <F8>, приведена в главе 8). Просмотрите последнюю версию списка совместимых аппаратных средств (Hardware Compatibility List, HCL) и проверьте, все ли аппаратные средства, установленные на компьютере, присутствуют в этом списке. Убедитесь в правильности подключения всех вновь установленных устройств. Попробуйте отключить новые устройства или заменить их (возможно, именно это и решит проблему), а также запустить диагностическое программное обеспечение, полученное от поставщика данного компьютера. Особое внимание следует уделить тестированию памяти.

Шаг 5. Выполните сканирование компьютера на вирусы с помощью новейшей версии антивирусного программного обеспечения, совместимого с Windows 2000. Вирусы могут повреждать как тома FAT, так и тома NTFS, и эти повреждения могут проявляться как ошибки STOP.

Шаг 6. Просмотрите базу знаний Microsoft, выполнив поиск по ключевым словам winnt и конкретному коду ошибки. Более подробная информация о Microsoft Knowledge Base приведена в последнем разделе данной главы, в списке источников дополнительной информации.

 

Наиболее распространенные ошибки STOP

Этот раздел содержит краткую информацию и инструкции по устранению наиболее часто встречающихся ошибок STOP. Представленные здесь материалы собраны на основании статей Microsoft Knowledge Base, а также документации, входящей в состав Windows 2000 Resource Kit. Если, несмотря на все предпринятые вами меры, ошибка продолжает появляться, обратитесь в службу технической поддержки.

 

STOP 0х00000000А - IRQL_NOT_LESS_OR_EQUAL

Это сообщение STOP, известное также под названием STOP OxA, указывает на то, что процесс режима ядра пытался получить доступ к участку памяти на слишком высоком уровне запроса прерывания (Interrupt Request Level, IRQL), в то время как такие процессы могут получать доступ только к процессам с IRQL не более высоким, чем их собственный,

Рекомендации. Чаще всего эта ошибка бывает вызвана некорректно работающим драйвером устройств, системным сервисом или BIOS. Чтобы попытаться быстро выполнить восстановление после такой ошибки, попробуйте перезагрузить компьютер, при появлении списка доступных операционных систем нажмите клавишу <F8> и выберите опцию Загрузка последней удачной конфигурации.

Примечание

Использование этой опции наиболее эффективно, если установка драйверов, сервисов и устройЬтв производится по одному за раз

Если сообщение появляется во время установки Windows 2000, просмотрите HCL и убедитесь в том, что все установленные на компьютере периферийные устройства перечислены в этом списке.

Более подробная информация об диагностике ошибок STOP 0xA приведена в статье из MicrosQft, Knowledge, Base "Troubleshooting: 'Stop 0x0A' Messages in Windows 2000 которую можно найти по адресу http://support.microsoft.com /supportAb/articles/ql65/8/63.asp

 

STOP 0x0000001 Е - KMODE_EXGEPTION_NOT_HANDLED

Это сообщение STOP, известное также как STOP Ox IE, указывает на то, что процесс режима ядра пытался выполнить недопустимую инструкцию.

Рекомендации. Проблема может быть вызвана несовместимыми аппаратными средствами, некорректно работающим драйвером или системным сер-

висом. Как правило, второй параметр этого сообщения идентифицирует проблемный драйвер или устройство его адресом (иногда может указываться имя этого драйвера). Попробуйте загрузить компьютер в безопасном режиме и блокировать указанный драйвер. Если это не поможет, то, как правило проблему можно решить с помощью консоли восстановления (Recovery Console) (см. главу 8).

В ряде случаев может помочь блокирование кэширования памяти через программу BIOS Setup.

 

STOP 0x00000024 - NTFS_FILE_SYSTEM

Это сообщение, известное также как STOP 0x24, указывает на проблему с драйвером Ntfs.sys, позволяющим системе выполнять чтение информации с томов NTFS и запись на такие тома.

Рекомендации. Чаще всего ошибка вызвана повреждением файловой системы NTFS или сбойными кластерами на жестком диске. Поврежденные драйверы SCSI и IDE также вызывают эту ошибку.

Рекомендации, позволяющие избежать ошибки такого рода приведены в начале главы 8. Если ошибка все же возникла, запустите программу Chkdsk /f /r для устранения повреждений файловой системы.

 

STOP OX0000002E - DATA_BUS_ERROR

Появление сообщения STOP Ox2E обычно указывает на ошибку четности в системной памяти. Эта ошибка всегда вызывается проблемами с аппаратными средствами, ошибками, допущенными при их конфигурировании, а также несовместимыми или дефектными аппаратными средствами.

Рекомендации. Если ошибка возникла после установки нового аппаратного компонента, попробуйте удалить вновь установленное оборудование. Запустите диагностические утилиты, полученные от поставщика аппаратных средств. Иногда ошибка может быть вызвана повреждением жесткого диска, — в этом случае воспользуйтесь консолью восстановления (Recovery Console).

 

STOP 0x00000050 - PAGE_FAULT_IN_NONPAGED_AREA

Эти сообщения (STOP 0x50) появляются, когда запрошенные данные не найдены в памяти. Система при этом генерирует так называемую страничную ошибку или страничное прерывание (page fault),/которая при обычных условиях означает, что система ищет данные в файле подкачки (paging file), В этом случае, однако, искомые данные идентифицируются системой как находящиеся в резидентном, невыгружаемом пуле (nonpaged pool), а это значит, что они ни при каких обстоятельствах не могли быть сброшены на диск. Таким образом, система не может найти требуемые данные и, следовательно, не может продолжать работу. Этот тип ошибки может быть вызван дефектными аппаратными средствами, некорректно работающим системным сервисом, резидентным антивирусным программным обеспечением, несовместимым с Windows 2000, и повреждениями файловой системы NTFS.

Рекомендации. Если ошибка произошла сразу же после установки нового устройства, попробуйте удалить его, чтобы проверить повторяемость ошибки. Чтобы исключить отказ уже установленных аппаратных средств, запустите диагностическую утилиту, полученную от поставщика компьютера (чаще всего эта ошибка генерируется дефектными микросхемами RAM).

В случае несовместимых или некорректно работающих системных сервисов можно попытаться использовать последнюю успешно загруженную конфигурацию (см. главу 8). Если проблема вызвана повреждением тома NTFS, ее поможет решить запуск программы Chkdsk /f /r. Иногда помогает запрет кэширования памяти в BIOS.

 

STOP 0x00000077 - KERNEL_STACKJNPAGE_ERROR

Сообщения STOP (STOP 0x77) указывают, что ядро не может прочесть запрошенную страницу из файла подкачки.

Рекомендации. Чаще всего причину возникновения этой ошибки можно определить по второму параметру сообщения (значение этого параметра следует записать). Список наиболее распространенных кодов приведен ниже:

0хС000009А - STATUS_INSUFFICIENT_RESOURCES. Недостаточный объем нерезидентного (выгружаемого) пула.

0хС000009С - STATUS_DEVICE_DATA_ERROR. Чаще всего является результатом появления плохих блоков на жестком диске.

0xC000009D- STATUS_DEVICE_NOT_CONNECTED. Чаще всего указывает на неправильное подключение жесткого диска.

0хС00001бА - STATUS_DISK_OPERATION_FAILED. Чаще всего вызывается плохими блоками на жестком диске.

0Xc0000ISS — STATUS_IO_DEVJCE_ERROR. Чаще всего возникает при неправильном подключении устройств SCSI или при попытке двух устройств использовать одно и то же прерывание.

Это наиболее распространенные коды, полный список можно найти в файле Ntstatus.h, входящем в состав продукта Windows 2000 Device Driver Kit (DDK).

 

STOP 0x00000079 - MISMATCHED_HAL

Эти сообщения (STOP 0x79) появляются при несовпадении уровня аппаратных абстракций (HAL) и ядра или типа компьютера, в основном, при смешении конфигурационных файлов однопроцессорной и многопроцессорных систем в пределах одной системы.

Рекомендации. Чаще всего эта ошибка возникает после ручной модификации или переписывания файлов Ntoskrnl.exe и Hal.dll. Эта ошибка может также указывать на несовпадение версий этих файлов (например, версия HAL предназначена для Windows NT 4.0, а версия ядра — для Windows 2000). Возможно также, что на компьютере по ошибке используется мультипроцессорный HAL и однопроцессорное ядро (или наоборот). Для устранения этой проблемы необходимо использовать диск аварийного восстановления (ERD) или консоль восстановления (см. главу 8).

 

STOP 0x0000007А - KERNEL_DATA_INPAGE_ERROR

Это сообщение (STOP 0x7А) указывает на то, что запрошенная страница данных ядра не могла быть считана в память из файла подкачки. Обычно ошибка вызвана появлением плохих блоков в файле подкачки, вирусами, ошибками контроллера жесткого диска или дефектной RAM.

Рекомендации. Выполните сканирование системы на вирусы, проверьте правильность подключения дисков и запустите диагностические утилиты, полученные от поставщика аппаратных средств. В случае необходимости проведите восстановление системы с помощью консоли восстановления.

 

STOP 0х0000007В - INACCESSIBLE_BOOT_DEVICE

Это сообщение (STOP 0x7B) появляется в процессе запуска системы и указывает на то, что в процессе загрузки ОС Windows 2000 потеряла доступ к загрузочному диску.

Рекомендации. Причиной возникновения ошибки могут быть сбой загрузочного диска, поврежденный драйвер загрузочного устройства, повреждение системного раздела, установка нового адаптера SCSI или контроллера жесткого диска.

Возможно, проблема может быть решена редактированием файла Boot.ini. Более подробную информацию по данному вопросу можно найти в статье из Microsoft Knowledge Base "BOOT.INI and ARC Path Naming Conventions and Usage " (http://support.microsoft.eom/support/kb/articles/ql02/8/73.asp) Если такая ошибка возникает в процессе установки системы, возможно, используется несовместимый жесткий диск или контроллер SCSI. Если программа Setup автоматически распознала контроллер, возможно, при установке системы следует пропустить фазу детектирования (поиска оборудования) и вручную указать драйвер, который должен быть загружен. Для этого: когда система на текстовой фазе инсталляции предложит нажать клавишу <F6>, чтобы указать драйвер накопителя вручную, следует нажать клавишу и вставить дискету с драйвером, полученным от поставщика этого устройства.

Если в системе недавно было установлено новое устройство (особенно жесткие диски или контроллеры), поможет выбор опции Загрузка последней удачной конфигурации в меню, выводимом после нажатия клавиши <F8>.

Наконец, эта ошибка может быть следствием повреждения жесткого диска. Если ошибка появляется раньше, чем вы можете зарегистрироваться в системе, запустите консоль восстановления и дайте команду chkdsk /f /r.

 

STOP OX0000007F - UNEXPECTED_KERNEL_MO0E_TRAP

Сообщения STOP 0x7F указывают на фатальную ошибку, вызванную программным прерыванием. Иногда эти ошибки могут быть вызваны программным обеспечением, но в большинстве случаев они являются следствием аппаратного сбоя.

Рекомендации. Первый и самый главный параметр этого сообщения (0х0000000х) принимает различные значения в зависимости от типа ошибки (полный список всех кодов можно найти в Windows 2000 Device Driver Kit).

Если ошибка происходит после установки нового устройства, и после установки этого устройства вы еще не регистрировались в системе, положение может исправить использование опции Загрузка последней удачной конфигурации.

Убедитесь в том, что все жесткие диски, контроллеры и адаптеры SCSI перечислены в HCL и установлены правильно. Чтобы исключить аппаратный сбой одного из устройств, которое раньше работало нормально (особенно это относится к памяти), запустите диагностические утилиты, полученные от поставщика компьютера. Следует отметить, что эта ошибка может также быть вызвана неумелым разгоном процессора (в этом случае верните процессор к его штатной тактовой частоте).

 

STOP ОхС000021 А - STATUS_SYSTEM_PROCESS_TERMINATED

Редкий случай, когда сообщение STOP вызвано сбоем сервиса, работающего не в режиме ядра, а в режиме пользователя. Это сообщение (STOP 0xC21A) появляется когда одна, из подсистем (например, Winlogon или CSRSS), настолько повреждена, что Windows. 2000 не может гарантировать безопасности и переключается в режим ядра с генерацией .этой ошибки.

Рекомендации. Подробную информацию о кодах статуса этой ошибки (первый из трех параметров) можно найти в файле Ntstatus.h, входящем в состав программного продукта Windows 2000 Device Driver Kit (DDK).

Поскольку ошибка STOP OxC21A происходит в режиме пользователя, наиболее .вероятной ее причиной являются плохо работающие приложения третьих фирм. Воспользуйтесь опцией Загрузка последней удачной конфигурации.

 

STOP OxC0000221 - STATUS_IMAGE_CHECKSUM_MISMATCH

Это сообщение STOP (STOP OxC221) указывает на повреждение драйвера или системного файла DLL. Как правило, в сообщении STOP указывается имя файла, вызвавшего проблему.

Рекомендации. См. главу 8.

 

Отладка ядра

Отладка ядра оказывается исключительно полезным средством, когда все другие методы устранения ошибок 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).

 

Целевой компьютер

Термин "целевой компьютер" (target computer) относится к компьютеру, на котором происходит ошибка ядра STOP. Именно этот компьютер и является отлаживаемым. Он может располагаться где угодно — как в нескольких шагах от компьютера, на котором работает отладчик, так и на достаточно большом расстоянии (связь можно поддерживать через модем).

 

Хост-компьютер

Термин "хост-компьютер" (host computer) в данной главе относится к компьютеру, на котором вы запускаете отладчик. Этот компьютер должен работать под управлением версии Windows 2000, по крайней мере такой же (или более новой), как и отлаживаемый компьютер.

 

Отладчик ядра

Программный продукт Windows 2000 DDK содержит графический отладчик WinDbg, применяемый для отладки драйверов и приложений, работающих как в режиме пользователя, так, и в режиме ядра. Подробная информация об использовании и конфигурировании отладчика содержится в файле справочной системы, поставляемом в комплекте с отладчиком.

Отладчик можно использовать как для локальной, так и для удаленной отладки ядра. Если вы применяете локальную отладку, то хост-компьютер находится в нескольких шагах от целевого и взаимодействует с ним через

нуль-модемный кабель. В случае удаленной отладки хост-компьютер может находиться на любом расстоянии от целевого, поскольку они взаимодействуют через модемы.

Оба компьютера обмениваются отладочной информацией через коммуникационные порты. Порты на обоих компьютерах должны быть сконфигурированы на одну и ту же скорость передачи данных, выраженную в битах в секунду (бит/с).

После появления "синего экрана" запишите всю важную информацию, которая была выведена в сообщении, и перезагрузите компьютер. Возможно, вам потребуется сконфигурировать целевой компьютер для локальной, ил и удаленной отладки и перезагрузить систему еще раз. После этого вы можете работать с Windows 2000 до тех пор, пока сообщение не появится снова. Когда "синий экран" появится еще раз, обратитесь к местному специалисту технической поддержки за помощью. На этом этапе можно решить, как будет проводиться отладка (локально или удаленно). Специалисты технической поддержки могут проинструктировать вас по вопросам конфигурирования системы для отладки.

 

Установка отладочного сеанса

Если принято решение использовать отладчик ядра для анализа ошибки ядра STOP, вам потребуется установить хост и соединить целевой и хост-компьютеры. Для этого необходимо использовать нуль-модемный кабель (в случае проведения локального отладочного сеанса) или модемный кабель (в случае удаленной отладки).

Прежде чем начинать отладку, выполните подготовительные действия:

1. Установите соединение между двумя компьютерами через модем или нуль-модемный кабель.

2. Сконфигурируйте целевой компьютер для отладки.

3. Установите в хост-системе символьное дерево.

4. Установите в хост-системе отладчик.

5. Запустите отладчик в хост-системе.

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

Чтобы сконфигурировать систему для удаленной отладки, необходимо изменить загрузочные опции Windows 2000 таким образом, чтобы на этапе за-

грузки выполнялась загрузка отладчика ядра. На платформах х86 это делается nyfeivr редактирования файла Boot.ini. Кроме того, необходимо подключить внешний модем к соответствующему СОМ-порту целевого компьютера и соединить его с входным (inbound) телефонным каналом.

Установка модема на целевом компьютере. Чтобы установить сеанс удаленной отладки, необходимо подключить к целевому компьютеру внешний модем и переконфигурировать параметры модема таким образом, чтобы они соответствовали требованиям отладчика ядра. Чтобы сконфигурировать модем; необходимо иметь возможность запустить программу Terminal.exe или другую подобную коммуникационную утилиту. Если запуск таких программ на левом компьютере невозможен, сконфигурируйте модем на другом компьютере, имеющем близкие конфигурационные параметры. Подключите сконфигурированный модем к целевому компьютеру и убедитесь, что он работает., Использование внутренних модемов в данном случае невозможно, так ,как при перезагрузке система сбрасывает изменения, внесенные в их конфигурацию.

Модем необходимо подключить к свободному СОМ-порту и установить конфигурационные параметры:

Auto answer mode

Hardware compression

Error detection

Flow control.

On

Рекомендуются скорости передачи данных: 9600 бит/с для систем х86

Просмотрите документацию по модему и найдите правильные значения строк дли процесса удаленного конфигурирования.

Редактирование файла Boot.ini на целевом компьютере. Чтобы сконфигурировать отлаживаемый компьютер для проведения сеанса отладки, необходимо отредактировать опции загрузки в файле Boot.ini таким образом, чтобы Windows NT загрузила отладчик ядра.

Опции отладчика. Ниже перечислены опции отладчика, которые можно использовать при конфигурировании системы для сеанса отладки.

/Debug

Приводит к загрузке отладчика на этапе загрузки системы. Отладчик остается в памяти компьютера в течение всего времени работы. Это означает, что специалист из группы поддержки может через модем вмешаться в работу отладчика, даже если система не зависла и сообщение STOP не появилось

/Debugport

Указывает последовательный порт, который должен использоваться отладчиком ядра. Если последовательный порт не указан, на компьютерах х86 отладчик по умолчанию будет использовать порт COM2

/Crashdebug

Отладчик загружается при загрузке системы, но остается неактивным до тех пор, пока не произойдет сбой. Это позволяет другим приложениям использовать указанный СОМ-порт (по умолчанию используется СОМ1) в течение всего времени, пока система еще работает

/Baudrate

Задает скорость передачи данных, которую будет использовать отладчик ядра. По умолчанию задается скорость 19 200 бит/с, которая является нормальной при удаленной отладке через модем

Чтобы сконфигурировать отлаживаемый компьютер на платформе х86, отредактируйте файл Boot.ini при помощи стандартного текстового редактора и добавьте в этот файл соответствующие опции отладчика.

 

Дополнительные источники информации

К сожалению, здесь невозможно более подробно описать интереснейшую и увлекательнейшую (хотя и весьма сложную) тему устранения ошибок STOP, анализа аварийного дампа и работу с отладочным сеансом.

Авторы считают своим долгом отослать заинтересованных читателей к источникам информации, где они могут получить исчерпывающие ответы на все интересующие их вопросы. Вот список этих источников:

http://msdn.microsoft.com/developer/wmdows2000 — масса полезной информации для разработчиков, в том числе можно загрузить версию Windows 2000 Device Driver Kit.

http://mspress.mkrosoft.com/Reslink — информация о продуктах Resource Kit.

http://www.microsoft.com/hwdev/driver/Ntdebugging.htm — ссылки на дополнительные источники с информацией по отладке.

http://www.microsoft.com/HWTEST/sysdocs/ntdebug.htm — полный справочник по отладке, начиная с установки отладочного режима и заканчивая подробным списком всех команд отладчика ядра.

http://support.microsoft.com/support/ — статьи Microsoft Knowledge Base, содержащие полную и подробную информацию об устранении ошибок STOP.