Как собрать информацию о зависании Windows 7, которая может включать как драйвер, так и код пользовательского режима?
Я испытываю сбой в приложении, в котором происходит сбой Windows 7, но не в традиционном сбое "синего экрана смерти", которое происходит, когда драйверы устройств или другие процессы в ядре разрушают всю систему, а, скорее, я вижу блокировка всех процессов пользовательского пространства.
Вот состояние машины:
(1) Движение мыши по-прежнему реагирует, и слой композиции Aero все еще работает (некоторые эффекты наведения мыши в проводнике по-прежнему работают), но не работает процесс win32, а GDI и пользовательский сеанс кажутся замороженными. (2) Ctrl+Alt+Delete не вызывает диспетчер задач. (3) Нет аварийных свалок, и нет синего экрана смерти.
Кто-нибудь знает какой-нибудь способ собрать больше информации о катастрофе? Я знаю, что существуют проблемы на уровне драйверов, и я хотел бы собрать информацию, которую могли бы использовать люди на уровне драйверов устройств. Когда вы получаете Blue Screen Of Death, вы можете собрать файлы дампа памяти (DMP) и отправить их разработчикам для помощи. Я ищу способ отслеживать процессы и состояние системы, возможно, подключить отладчик ядра или что-то в этом роде. Я никогда не занимался отладкой ядра, поэтому я ищу способ начать с этим.
Я легко могу воспроизвести сбой в win7/32-битной виртуальной машине, и у меня еще не установлены средства отладки ядра. Во-первых, мне интересно, если мне кажется, что я выбрал стоящий подход (инструменты отладки ядра?), И если это так, я не знаю, как использовать эти инструменты для сбора информации, которая может помочь разработчикам режима ядра найти проблему.,
1 ответ
Загрузите WinDbg и подключитесь к рассматриваемому компьютеру с помощью Firewire или последовательного кабеля (USB также работает при некоторых обстоятельствах IIRC). Это позволит вам искать взаимоблокировки в работающей системе с удаленного компьютера.
Другая возможность - вызвать сбой системы (посмертный анализ). Прежде чем устанавливать параметры аварийного дампа на полный дамп, вы должны убедиться в этом. Это создаст аварийный дамп того же размера, что и ваш объем оперативной памяти. Конечно, это может создать проблему при получении дампов для людей (например, через сеть). Также помните, что личные данные могут содержаться в дампе, в зависимости от обстоятельств.
Как спровоцировать аварийный дамп, я описал здесь, соответствующая часть приведена ниже. Если вы подключены через отладчик ядра, вы также можете спровоцировать создание дампа памяти.
Можно сказать, что драйвер (ы) клавиатуры вызывают BSOD:
HKLM\CurrentControlSet\Services\kbdhid\Parameters
или (для старых клавиатур PS/2)
HKLM\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters
И там поставили REG_DWORD
названный CrashOnCtrlScroll
в 1
,
После следующей перезагрузки вы можете заставить синий экран Ctrl+ScrollLk+ScrollLk
, Код проверки ошибок в этом случае будет 0xE2
(MANUALLY_INITIATED_CRASH
).