Гаджеты

Аварийный дамп памяти. BSoD: Анализ дампов памяти

Аварийный дамп памяти. BSoD: Анализ дампов памяти

Одним из наиболее часто встречающихся отказов работы Windows — системные исключения, которые пользователь видит в виде «синего экрана смерти» (BSOD). Как правило, эта фатальная ошибка возникает или из-за неисправности драйверов, оборудования (чаще при загрузке ОС) или из-за действия вирусов и антивирусов.

На синем экране смерти содержится информация о причинах, вызвавших исключение (в виде кода STOP-ошибки вида 0x0000007b), адреса в памяти, при обращении к которым произошло исключение и прочая полезная информация. Такая информация называется STOP-ошибкой, переменными параметрами которой как раз являются адреса памяти. Иногда там же содержится имя файла, вызвавшего исключение.

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

Что такое дамп

  • dump (англ.) – мусорная куча; свалка; дыра; трущоба.
  • dump (memory dump) – 1) дамп, вывод содержимого оперативной памяти на печать или экран; 2) «снимок» оперативной памяти; данные, получаемые в результате дампинга; 3) аварийное снятие, выключение, сброс.
  • dumping – дампинг, снятие дампа.

Настройки для сохранения дампа памяти хранятся в системном реестре Windows.

Информация о дампе памяти в системном Реестре:

В разделе Реестра Windows аварийный дамп памяти определяется следующими параметрами:

– REG_DWORD-параметр AutoReboot со значением 0×1 (опция Выполнить автоматическую перезагрузку вспомогательного окна Загрузка и восстановление диалогового окна Свойства системы);

– REG_DWORD-параметр CrashDumpEnabled со значением 0×0, если дамп памяти не создается; 0×1 – Полный дамп памяти; 0×2 – Дамп памяти ядра; 0×3 – Малый дамп памяти (64КБ);

– REG_EXPAND_SZ-параметр DumpFile со значением по умолчанию %SystemRoot%\MEMORY.DMP (место хранения файла дампа);

– REG_DWORD-параметр LogEvent со значением по умолчанию 0×1 (опция Записать событие в системный журнал окна Загрузка и восстановление);

– REG_EXPAND_SZ-параметр MinidumpDir со значением по умолчанию %SystemRoot%\Minidump (опция Папка малого дампа окна Загрузка и восстановление);

– REG_DWORD-параметр Overwrite со значением по умолчанию 0×1 (опция Заменять существующий файл дампа окна Загрузка и восстановление);

– REG_DWORD-параметр SendAlert со значением по умолчанию 0×1 (опция Отправить административное оповещение окна Загрузка и восстановление).

Как система создает файл аварийного дампа памяти

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

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

Сначала ядро системы проверяет состояние каждого компонента, задействованного в процессе сохранения дампа. Это делается для того, чтобы при прямой записи в секторы диска не повредить данные, лежащие вне страничного файла. Размер страничного файла должен быть на 1МБ больше размера физической памяти, потому что при записи информации в дамп создается заголовок, в котором содержатся сигнатура аварийного дампа и значения нескольких важнейших переменных ядра системы. Заголовок занимает меньше 1МБ, но операционная система может увеличивать (или уменьшать) размер файла подкачки не менее чем на 1МБ.

После загрузки системы Session Manager (Диспетчер сеанса Windows NT; дисковый адрес – \WINDOWS\system32\smss.exe) инициализирует страничные файлы системы, используя для создания каждого файла собственную функцию NtCreatePagingFile. NtCreatePagingFile определяет, существует ли инициализируемый страничный файл, и если да, то имеется ли в нем заголовок дампа. Если заголовок есть, то NtCreatePagingFile посылает в Session Manager специальный код. После этого Session Manager запускает процесс Winlogon (Программа входа в систему Windows NT; дисковый адрес – \WINDOWS\system32\winlogon.exe), который извещается о существовании аварийного дампа. Winlogon запускает программу SaveDump (Программа сохранения копии памяти Windows NT; дисковый адрес – \WINDOWS\system32\savedump.exe), которая анализирует заголовок дампа и определяет дальнейшие действия в аварийной ситуации.

Если заголовок указывает на существование дампа, то SaveDump копирует данные из страничного файла в файл аварийного дампа, имя которого задано REG_EXPAND_SZ-параметром DumpFile раздела Реестра . Пока SaveDump переписывает файл дампа, операционная система не задействует ту часть страничного файла, в которой содержится аварийный дамп. В это время объем виртуальной памяти, доступной для системы и приложений, уменьшается на размер дампа (при этом на экране могут появиться сообщения, указывающие на нехватку виртуальной памяти). Затем SaveDump информирует диспетчер памяти о завершении сохранения дампа, и тот высвобождает ту часть страничного файла, в которой хранится дамп, для общего пользования.

Сохранив файл дампа, программа SaveDump делает запись о создании аварийного дампа в журнале событий Система, например: «Компьютер был перезагружен после критической ошибки: 0x100000d1 (0xc84d90a6, 0×00000010, 0×00000000, 0xc84d90a6). Копия памяти сохранена: C:\WINDOWS\Minidump\Mini060309-01.dmp».

Если включена опция Отправить административное оповещение, то SaveDump отправляет оповещение администратору.

Разновидности дампов

  • Полный дамп памяти записывает всё содержимое системной памяти при возникновении неустранимой ошибки. Для этого варианта необходимо иметь на загрузочном томе файл подкачки, размер которого равен объему всей физической оперативной памяти плюс 1МБ. По умолчанию полный дамп памяти записывается в файл %SystemRoot%\Memory.dmp. При возникновении новой ошибки и создании нового файла полного дампа памяти (или дампа памяти ядра) предыдущий файл заменяется (перезаписывается). Параметр Полный дамп памяти недоступен на ПК, на которых установлена 32-битная операционная система и 2 или более гигабайта оперативной памяти.

При возникновении новой ошибки и создании нового файла полного дампа памяти предыдущий файл заменяется.

  • Дамп памяти ядра записывает только память ядра, благодаря чему процесс записи данных в журнал при внезапной остановке системы протекает быстрее. В зависимости от объема физической памяти ПК в этом случае для файла подкачки требуется от 50 до 800МБ или одна треть физической памяти компьютера на загрузочном томе. По умолчанию дамп памяти ядра записывается в файл %SystemRoot%\Memory.dmp.

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

  • Малый дамп памяти записывает наименьший объем полезной информации, необходимых для определения причины неполадок. Для создания малого дампа памяти необходимо, чтобы размер файла подкачки составлял как минимум 2МБ на загрузочном томе.

Файлы малого дампа памяти содержат следующие сведения:

  • сообщение о неустранимой ошибке, ее параметры и прочие данные;
  • список загруженных драйверов;
  • контекст процессора (PRCB), на котором произошел сбой;
  • сведения о процессе и контекст ядра (EPROCESS) для процесса, вызвавшего ошибку;
  • сведения о процессе и контекст ядра (ETHREAD) для потока, вызвавшего ошибку;
  • стек вызовов в режиме ядра для потока, вызвавшего ошибку.

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

При возникновении следующей ошибки и создании второго файла малого дампа памяти предыдущий файл сохраняется. Каждому дополнительному файлу дается уникальное имя. Дата закодирована в имени файла. Например, Mini051509-01.dmp - это первый файл дампа памяти, созданный 15 мая 2009 г. Список всех файлов малого дампа памяти хранится в папке %SystemRoot%\Minidump .

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

Многие системные администраторы всё еще пренебрегают анализом аварийных дампов Windows, считая, что работать с ними слишком трудно. Трудно, но можно: даже если, например, анализ одного дампа из десяти окажется успешным, – усилия, потраченные на освоение простейших приемов анализа аварийных дампов, будут не напрасны!..

Приведу примеры из своей «сисадминской» практики.

В локальной сети без видимой причины («железо» в порядке, отсутствие вирусов гарантировано, пользователи – с «нормальными руками») «полегли» несколько рабочих станций с Windows XP SP1/SP2 «на борту». Компьютеры загрузить в нормальном режиме не удавалось, – доходило до «Приветствия» – и на перезагрузку до бесконечности. При этом, в Безопасном режиме ПК загружались.

Изучение дампов памяти позволило выявить причину неисправности: виновником оказался антивирус Касперского , точнее, свежие антивирусные базы (если еще точнее, то два модуля баз – base372c.avc, base032c.avc).

…Еще был такой случай. На локальном ПК с Windows XP SP3 при попытке открыть видеофайлы форматов.avi и.mpeg происходила перезагрузка. Изучение дампа памяти позволило выявить причину неисправности – файл nv4_disp.dll драйвера видеокарты NVIDIA GeForce 6600. После обновления драйвера неисправность была устранена. Вообще, драйвер nv4_disp.dll — один из самых нестабильных драйверов, который часто приводил к BSOD.

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

Анализ дампа памяти

Для анализа аварийных дампов памяти существует множество программ, например, DumpChk, Kanalyze, WinDbg.

Рассмотрим анализ аварийных дампов памяти с помощью программы WinDbg (входит в состав Debugging Tools for Windows).

Установка средств отладки

  • посетите веб-узел http://www.microsoft.com/whdc/devtools/debugging/default.mspx корпорации Microsoft;
  • загрузите Debugging Tools for Windows, например, для 32-битной версии Windows это можно сделать на странице Download the Debugging Tools for Windows ;
  • после скачивания запустите установочный файл;
  • в окне Debugging Tools for Windows Setup Wizard нажмите Next;
  • в окне с лицензионным соглашением установите переключатель I agree –> Next;
  • в следующем окне выберите тип установки (по умолчанию средства отладки устанавливаются в папку \Program Files\Debugging Tools for Windows) –> Next –> Install –> Finish;
  • для интерпретации файлов дампа памяти необходимо также загрузить пакет символов (Symbol Packages, так называемые символьные файлы, или файлы символов отладки) для своей версии Windows, – зайдите на страницу Download Windows Symbol Packages ;
  • выберите свою версию Windows, скачайте и запустите установочный файл Symbol Packages;
  • в окне с лицензионным соглашением нажмите Yes;
  • в следующем окне выберите папку для установки (по умолчанию предлагается \WINDOWS\Symbols) –> OK –> Да;
  • в окне Microsoft Windows Symbols с сообщением «Installation is complete» нажмите OK.

Использование программы WinDbg для анализа аварийных дампов памяти

  • запустите WinDbg (по умолчанию устанавливается в папку \Program Files\Debugging Tools for Windows);
  • выберите меню File –> Symbol File Path…;
  • в окне Symbol Search Path нажмите кнопку Browse…;
  • в окне Обзор папок укажите расположение папки Symbols (по умолчанию – \WINDOWS\Symbols) –> OK –> OK;
  • выберите меню File –> Open Crash Dump… (или нажмите Ctrl + D);
  • в окне Open Crash Dump укажите расположение Crash Dump File (*.dmp) –> Открыть;
  • в окне Workspace с вопросом «Save information for workspace?», установите флажок Don"t ask again –> No;
  • в окне WinDbg откроется окно Command Dump <путь_и_имя_файла_дампа> с анализом дампа;
  • просмотрите анализ дампа памяти;
  • в разделе «Bugcheck Analysis» будет указана возможная причина краха, например, «Probably caused by: smwdm.sys (smwdm+454d5)»;
  • для просмотра детальной информации нажмите ссылку «!analyze -v» в строке «Use !analyze -v to get detailed debugging information»;
  • закройте WinDbg;
  • используйте полученную информацию для устранения причины неисправности.

Например, на следующем скриншоте причина неисправности – файл nv4_disp.dll драйвера видеокарты.

При возникновении критической ошибки при работе с Windows пользователь может задаться вопросом: каким образом можно получить доступ к аварийному дампу памяти Windows? Подобный дамп при правильной настройке конфигурации системы поможет запустить систему в случае сбоя или так называемого синего экрана смерти (BSOD).

Если у вас в процессе настройки дампа памяти возникнут проблемы или операционная система после этого будет работать не корректно то вы можете .

Дамп памяти Windows 10

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

Для чего нужен дамп памяти Windows 10?

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

Чем более точно содержимое дампа памяти будет отражать происходившее в системе на момент сбоя, тем проще будет при анализе аварийной ситуации и дальнейших действиях по её исправлению.

Крайне важно получить актуальную копию именно в тот момент, который был непосредственно перед сбоем. И единственный способ это сделать — создать аварийный дамп памяти Windows 10.

Причины появления ошибок в Windows 10 очень разнообразны:

— несовместимость подключаемых устройств;

— новые обновления Windows 10;

— несовместимость устанавливаемых драйверов;

— несовместимость устанавливаемых приложений;

— и прочие причины.

Как настроить дамп памяти в Windows 10?

Для того чтобы настроить аварийный дамп памяти Windows 10 необходимо придерживаться следующих действий:

1. Правой кнопкой мыши кликаем на пуск Windows 10. В появившемся контекстном меню выбираем пункт «Система».

2. В окне «Система» в верхнем углу слева выбираем «Дополнительные параметры системы».

3. В окне «Свойства системы» в пункте «Загрузка и восстановление» нажимаем «Параметры».

Тут и происходит настройка аварийного дампа памяти Windows 10.

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

— Поставить галочку на «заменить существующий файл дампа». Учитывая тот факт, что данные могут весить десятки, а то и сотни гигабайт — это очень полезно для небольших жёстких дисков;

— Запись отладочной информации. Эта функция позволит выбрать вид дамп файла;

— Выполнить автоматическую перезагрузку. Продолжение работы, после возникшей ошибки;

— Запись события в системный журнал. Информация о системном сбое будет добавлена в логи операционной системы.

Дамп памяти Windows 10 является удобным и действительно работающим методом страховки системных данных.

Зная «врага в лицо» его будет в разы проще найти и ликвидировать. Дамп памяти Windows 10 позволит выявить причину системного сбоя и скорректировать действия по ликвидации ошибки, значительно уменьшив радиус усилий и работ.

Сегодня мы поговорим о том, что такое дамп памяти. Этот файл содержит в себе определенные данные, которые находились в оперативной памяти какого-то конкретного компьютера в определенный период времени. Он также представляет собой ценный для специалистов и разработчиков различного программного обеспечения. Когда происходит аварийный дамп памяти, данные люди имеют возможность посмотреть, в какой момент это произошло и по каким причинам. Это позволяет исправлять недоработки и баги софта. При любом сбое операционных систем компании Майкрософт дамп памяти всегда создается.

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

Малый дамп памяти будет равняться шестидесяти четырем килобайтам. В данном случае в него будет записываться только самая необходимая информация о возникших проблемах. Далее идет дамп памяти ядра. Его размер, как правило, также составляет шестьдесят четыре килобайта. Он содержит в себе отладочные данные для вашего системного ядра. Переходим к последнему пункту. Он называется "полный дамп памяти Windows 7". В него происходит полное сохранение всей системной памяти. В этот момент создаются необходимые файлы, размер которых составляет эквивалент оперативной памяти, которая установлена на вашем устройстве.


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

Также стоит отметить, что этот файл вы можете создавать самостоятельно вручную. Для этого вызовите стартовое меню, запустите службу, которая называется «Выполнить», и в ней введите команду «regedit», после чего нажмите кнопку «Ок». Перед вами появится операционной системы. Там необходимо найти такой ключ, который выглядит следующим образом: HKEYS LOCAL MACHINES/ SYSTEMA/ CurrentControlSets / Service/ i8042prt/ Parametres.

Когда вы его найдете, щелкните правой кнопкой вашего манипулятора по правой части этого окна и выберете создание DWORLD. После этого напишите название ключа «CrashOnCtrlScroll», после чего присвойте ему значение «1». Затем закройте этот редактор и перезагрузите свой компьютер или ноутбук. Для того чтобы создался новый файл, содержащий дамп памяти, нажмите и удерживайте кнопку Контрал, после чего дважды надавите на клавишу

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

Инструкция по интерпретации файла малого дампа памяти .

Очень часто можно встретить вопросы, связанные с появлением синего экрана смерти (Blue Screen Of Death = BSOD ). Однако практически любой человек может самостоятельно определить причину возникновения ошибки, которая привела к появлению BSOD . Дело в том, что во время появления синего экрана на жесткий диск записывается специальный файл , который называется Малый Дамп Памяти (конечно, при условии, что его запись разрешена в настройках).

Включить запись Малого Дампа можно следующим образом:

1. Нажмите кнопку Пуск и выберите в меню Настройка пункт Панель управления .

2. Дважды щелкните значок Система .

3. Откройте вкладку Дополнительно и нажмите кнопку .

4. В списке Запись отладочной информации выберите Малый дамп памяти (64 КБ) .

В файле малого дампа памяти записывается минимальный набор полезной информации, позволяющей определить причину неожиданного сбоя компьютера . Для этого параметра на загрузочном томе требуется файл подкачки размером не менее 2 МБ . На компьютерах с операционной системой Microsoft Windows 2000 или более поздними версиями Windows при непредвиденном сбое компьютера каждый раз создается новый файл.

При возникновении следующей ошибки и создании второго файла малого дампа памяти Windows сохраняет предыдущий файл. Windows присваивает каждому файлу отдельное имя с указанием даты. Например, Mini022900-01.dmp - это первый файл дампа памяти, созданный 29 февраля 2000 г. Список всех файлов малого дампа памяти хранится в папке %SystemRoot%\Minidump.

Средства интерпретации файла малого дампа памяти

Для загрузки файлов малого дампа памяти можно воспользоваться служебной программой Dump Check (Dumpchk.exe). Программа Dumpchk.exe используется также для проверки правильности создания файла дампа памяти. Dump Check не требует доступа к символам отладки. Программа Dump Check входит в комплект средств поддержки Microsoft Windows 2000 Support Tools и Microsoft Windows XP Support Tools. Скачать данные пакеты вы можете, пройдя по данной ссылке http://www.microsoft.com/whdc/devtools/debugging/default.mspx

Для интерпретации файлов малого дампа памяти можно воспользоваться также средствами WinDbg или the KD.exe . Программы WinDbg и KD.exe входят в последнюю версию пакета средств отладки для Windows.

Как открыть файл дампа памяти

Чтобы открыть файл дампа памяти, выполните следующие действия.

  1. Нажмите кнопку Пуск , выберите пункт Выполнить , введите команду cmd и нажмите кнопку ОК .
  2. Перейдитевпапку «Debugging Tools for Windows». Для этого введите в командной строке

cd c:\program files\debugging tools for windows

и нажмите клавишу ВВОД.

  1. Для загрузки файла дампа памяти в программу отладки введите одну из следующих команд и нажмите клавишу ВВОД:

windbg -y путь_к_символу -i путь_к_образу -z путь_к_файлу_дампа

kd -y путь_к_символу -i путь_к_образу -z путь_к_файлу_дампа

Раздел-заглушка

Описание

путь_к_символу

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

путь_к_образу

Путь к этим файлам. Эти файлы содержатся в папке I386 на компакт-диске Windows XP. Пример пути: C:\Windows\I386.

путь_к_файлу_дампа

Путь к анализируемому файлу дампа памяти и имя этого файла.

Анализ файла дампа памяти

Для сбора данных в файле дампа существует несколько команд, включая следующие:

  • Команда !analyze -show отображает код неустранимой ошибки и ее параметры. Код неустранимой ошибки известен также как контрольный код неполадки.
  • Команда !analyze -v отображает подробный результат анализа.
  • Команда lm N T выводит список указанных загруженных модулей. Данные включают состояние и путь модуля.

Примечание . Команда с раширением !drivers выводит список всех драйверов, загруженных на конечный компьютер, а также сведения об используемой ими памяти. Расширение !drivers не используется в Windows XP и более поздних версиях. Для отображения сведений о загруженных драйверах и других модулях воспользуйтесь командой lm . Команда lm N T выводит сведения в таком же формате, как и устаревшее расширение !drivers .

Сведения о других командах и полном синтаксисе команд см. в справочной документации к средствам отладки. Справочная документация к средствам отладки размещается в файле: C:\Program Files\Debugging Tools for Windows\Debugger.chm

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

311503 (http://support.microsoft.com/kb/311503/) Получение файлов символов отладки с сервера символов Майкрософт

Консультируя клиентов, я обратил внимание на то, что зачастую для них единственный способ борьбы с синим экраном смерти (Blue Screen of Death, BSoD) — это поиск неисправности по номеру STOP-ошибки. Обычно такой подход может помочь выбрать общее направление решения проблемы, но не всегда позволяет ее локализовать. Например, определить какой конкретный драйвер устройства вызывает BSoD. Строго говоря, анализ дампов памяти — это основной метод борьбы с STOP-ошибками.

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

1. Нажмите кнопку Пуск и выберите в меню Настройка пункт Панель управления
2. Дважды щелкните по значку Система
3. Откройте вкладку Дополнительно и нажмите кнопку
4. В области Запись отладочной информации выберите пункт Малый дамп памяти (64 КБ)

В файле малого дампа памяти записывается минимальная информация, позволяющая установить причину сбоя компьютера. Для этого на загрузочном томе требуется файл подкачки размером не менее 2 МБ. По умолчанию файлы малого дампа памяти хранятся в папке %SystemRoot%\Minidump.

Файлы малого дампа памяти содержат следующие сведения:

  • Сообщение о неустранимой ошибке, ее параметры и прочие данные
  • Список загруженных драйверов
  • Контекст процессора (PRCB), на котором произошел сбой
  • Сведения о процессе и контекст ядра (EPROCESS) для процесса, вызвавшего ошибку
  • Сведения о процессе и контекст ядра (ETHREAD) для потока, вызвавшего ошибку
  • Стек вызовов в режиме ядра для потока, вызвавшего ошибку

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

Для анализа дампов памяти используются утилиты kd.exe и windbg.exe . Эти утилиты входят в набор Debugging Tools for Windows . Для того чтобы упростить работу с ними, рекомендую использовать скрипт (автор Alexander Suhovey). Вам так же понадобится утилита reg.exe (включена в Microsoft Windows XP и выше; для Windows 2000 входит в состав Windows 2000 Support Tools).

Скачайте и распакуйте архив со скриптом в папку D:\KDFE . Для работы отладчику требуются символьные файлы, которые можно скачать там же, где и Debugging Tools for Windows. Полный размер пакета с этими файлами довольно внушителен (может составить более 1Гб в зависимости от выбранной платформы). Поэтому скрипт настроен таким образом, чтобы автоматически скачивать с Microsoft Symbol Server только необходимые символьные файлы для работы с конкретным дампом памяти и сохранять их локально на диске для последующего использования. При необходимости можно отредактировать скрипт и изменить переменную smbpath , которая указывает на папку, в которую kd.exe будет сохранять необходимые файлы.

Для использования выполните kdfe.cmd с именем файла дампа памяти в качестве параметра. Например:

D:\KDFE>kdfe mini111208-01.dmp

Analyzing "D:\KDFE\Mini111208-01.dmp", please wait... Done.

Crash date: Wed Nov 12 08:35:56.214 2008 (GMT+2)
Stop error code: 0x50
Process name: AUM.exe
Probably caused by: nv4_disp.dll (nv4_disp+41213)

Надо отметить, что бывают ситуации, когда из-за некорректной работы одного из драйверов, STOP-ошибка впоследствии возникает в совершенно нормальном драйвере. В этом случае рекомендую использовать утилиту verifier.exe (см.