Как сделать анализ дампа. Что такое дамп памяти. Что такое дамп

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

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

REG_DWORD -параметр CrashDumpEnabled со значением 0x0 , если дамп памяти не создаётся; 0x1 Полный дамп памяти ; 0x2 Дамп памяти ядра ; 0x3 Малый дамп памяти (64КБ) ;

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

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

REG_EXPAND_SZ -параметр MinidumpDir со значением %SystemRoot%\Minidump (опция );

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

REG_DWORD -параметр SendAlert со значением 0x1 (опция Отправить административное оповещение окна ).

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

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

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

Сначала ядро системы проверяет состояние каждого компонента, задействованного в процессе сохранения дампа. Это делается для того, чтобы при прямой записи в секторы диска не повредить данные, лежащие вне файла. Размер файла должен быть на 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, 0x00000010, 0x00000000, 0xc84d90a6). Копия памяти сохранена: C:\WINDOWS\Minidump\Mini060309-01.dmp» .

Полный дамп памяти записывает всё содержимое памяти при возникновении неустранимой ошибки. Для этого варианта необходимо иметь на загрузочном томе файл подкачки, размер которого равен объёму всей физической оперативной памяти плюс 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 .

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

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

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

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

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


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

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

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

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

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

Шаг 1 — Включение записи дампов памяти

Сначала нужно убедиться, что запись дампов включена. Для этого нужно открыть свойства системы, нажав комбинацию клавиш Win+Pause , [в Vista щелкнуть ссылку Дополнительные параметры системы ], перейти на вкладку Дополнительно , и наконец нажать кнопку .

Малых дампов памяти должно быть достаточно для наших целей.

Обратите внимание на путь к папке, куда они будут сохраняться при возникновении критической ошибки.

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

Шаг 2 — Анализ дампов с помощью утилиты MinDumper

Рассказ об утилите вы найдете в этой статье .

  1. Загрузите и установите Debugging Tools for Windows. Они входят в состав веб-установщика Windows SDK , где после запуска в нужно выбрать Debugging Tools в разделе Common Utilities.
  2. Загрузите сценарий (kdfe.cmd), который написал Александр Суховей и опубликовал на ресурсе sysadmins.ru (поскольку живую ссылку мне там найти не удалось, предлагаю свою). Распакуйте архив в любую папку.
    Примечание . В случае нестандартного расположения папки Program Files вам может потребоваться указать в kdfe.cmd путь к папке, в которую установлены средства Debugging Tools for Windows. Используйте переменную dbgpath в строке 41.

Шаг 3 — Анализ дампа памяти

Теперь все сводится к выполнению одной команды. Откройте командную строку и перейдите в папку, в которую вы распаковали kdfe.cmd . Запустите файл, указав в качестве параметра путь к файлу дампа памяти (в примере ниже файл называется Mini1110307-01.dmp )

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

Настройка дампа памяти.

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

Настройка создания дампов памяти при ошибках Windows

Чтобы посмотреть и настроить, например, увеличить дамп памяти Windows, рассмотрим 7-ю версию – она продолжает оставаться популярной. Да и в других версиях это делается подобным образом. Для этого можно кликнуть правой кнопкой мыши по значку «Мой компьютер» и выбрать «Свойства». Можно пойти другим путём – зайти в «Панель управления» и выбрать «Система». В любом случае откроется одно и то же окно. Далее выберите слева пункт «Дополнительные параметры системы», и в появившемся маленьком окне перейдите на вкладку «Дополнительно». Здесь в разделе «Загрузка и восстановление» кликните по кнопке «Параметры».

  1. Малый дамп – объём его всего 256 кб, там записывается лишь самая общая информация.
  2. Дамп памяти ядра – здесь записывается состояние различных программ на момент сбоя для одного ядра процессора. Объём файла – около 33% от объёма всей имеющейся оперативки. Здесь есть полезная информация, позволяющая выявить причину сбоя, но её не очень много.
  3. Полный дамп – это копия всей оперативной памяти , и размер файла будет равен её объёму. Здесь можно найти при желании что угодно. Такой дамп создаётся и при переходе в режим гибернации – всё содержимое оперативки просто сохраняется на винчестер, и при включении компьютера он продолжает работать с того же места.

В Windows более новых версий есть режим «Автоматический дамп памяти» – можно выбрать его, и этого будет вполне достаточно. Как видите, настроить дамп памяти в Windows 7 несложно. Он будет записываться только при сбоях, и на работу системы никак не влияет.

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

Когда случится сбой и будет создан новый файл с отчётом о проблеме, надо еще как-то его открыть и узнать, что в нём записано. Файл имеет расширение dmp, но встроенные средства для его открытия неудобны и добраться до них можно из командной строки. Кстати, система сохраняет этот файл в своей папке. Чем открыть файл дампа памяти с расширением dmp? Для этого существуют различные утилиты, в том числе и от Microsoft, например, Microsoft Kernel Debuggers. Её можно скачать совершенно бесплатно с официального сайта, но надо учитывать, 32-битная или 64-битная версия нужна. В этой программе можно открыть файлы дампа памяти, которые находятся в системной папке и смотреть их содержимое в виде расшифровки. Конечно, информация сугубо специфичная и рассчитана на специалистов.

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

Как удалить файла дампа памяти

Можно ли вообще их удалять? Да, они представляют собой просто служебную информацию для дальнейшего анализа. Если их уже просмотрели или они не нужны, то их можно удалить самым простым способом – в корзину. Иначе они постепенно накапливаются и начинают занимать немало места на винчестере, особенно если снимается полная копия оперативной памяти. Конечно, искать вручную и удалять все эти файлы – занятие не очень приятное. Поэтому можно воспользоваться любой утилитой очистки диска, даже встроенной в Windows, отметив там «Удалять системные файлы». Когда она отработает, все дампы будут тоже удалены. Сама система этими файлами не пользуется и их удаление совершенно безопасно.

Чтобы исправить синий экран смерти необходимо выявить причину его появления. Для этого нужно проанализировать аварийный файл дампа памяти. Анализ аварийного дампа можно провести различными способами. Об этом как раз и поговорим в этой статье.

В предыдущей статье на сайте мы уже писали про причины, которые чаще всего приводят к синему экрану смерти. Также показали как правильно настроить создание аварийных дампов памяти и рассказали где хранится этот самый файл дампа . Мельком коснулись того, что по стоп коду и по информации из дамп файла можно путём анализа точнее выяснить причину приведшую к BSOD .
Осталось узнать как и с помощью чего можно проанализировать информацию из дамп файла. Рассмотрим несколько способов, включающих как инструмент анализа от самих разработчиков Windows так и сторонние инструменты.

Анализ дамп файла с помощью Microsoft Kernel Debugger.

Microsoft Kernel Debugger - специальная утилита для анализа крэш дампов. Скачать саму утилиту, а также необходимые для её работы компоненты можно с сайта Microsoft - Debugging tools. Версия пакета Debugging Tools for Windows должна соответствовать разрядности операционной системы. Подробно про то где и как скачать эту утилиту писал .
Вместе с самим отладчиком необходимо ещё скачать набор отладочных символов - Debugging Symbols . Набор символов, также различается для каждой версии Windows, включая и по разрядности. Таким образом, для 32-х разрядной Windows 7 необходимо скачать пакет символов Windows 7 x32 , а для 64-х битной Windows 7 набор символов Windows 7 x64 . Таким же образом нужно выбирать набор символов и для других версий Windows (widows 10, XP и т.д.). Нужный набор символов также можно скачать в самом отладчике, но об этом ниже.
После установки утилиты и набора отладочных символов, можно запустить сам отладчик. После запуска необходимо в его настройках указать ему путь до отладочных символов. Для этого:
Нажмите на кнопку File ⇒ Symbol File Path...
Далее нажмите кнопку Browse и укажите папку куда сохранили набор символов.
Скачать самую новую версию символов можно с помощью самой утилиты. Для этого в поле File ⇒ Symbol File Path... введите:
SRV*C:\symbols*http://msdl.microsoft.com/download/symbols

Далее нажмите на File ⇒ Save workspace и затем нажмите на ОК.
Таким образом утилита запросит информацию об отладочных символах через интернет напрямую с сервера Microsoft .
Для того, чтобы приступить к анализу нажмите на File > Open Crash Dump… и укажите требуемый файл дампа памяти (малый дамп памяти).
Система проведёт анализ дампа и по результатам выдаст возможную причину ошибки.

Кликнув по гиперссылке !analyse-v откроется более расширенная информация по ошибке.
Завершить отладку можно с помощью пункта меню Debug > Stop Debugging .

Анализ файла дампа с BlueScreenView

BlueScreenView это бесплатная утилита для анализа файла малого аварийного дампа памяти. Данная утилита имеет поддержку русского языка. Основным плюсом данной программы является то, что для её работы не нужно скачивать отладочные символы. Это делает эту утилиту полностью автономной и независимой. Еще одним плюсом данной программы является наличие портабельной версии, то есть версии, которую не нужно устанавливать в систему. Автором программы является Nier Sofer . Скачать можно с официального сайта автора . Портабельную версию программы можно скачать по ссылке на официальной странице, в названии которого, в скобках указано in Zip file .
При скачивании важно учитывать разрядность вашей ОС.
Пролистав чуть ниже можно скачать файл русификации - BlueScreenView_lng.ini , который нужно просто закинуть в папку с самой программой. Я подготовил для скачивания программу с уже настроенным языком. Вот прямые ссылки:

А теперь непосредственно про процедуру анализа.

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

После запуска программа сразу сканирует стандартную директорию хранения файла дампа - %SystemRoot%\Minidump . Директорию можно изменить в дополнительных параметрах программы. Интерфейс окна программы условно можно поделить на 3 области:

  • Верхняя область кнопок меню
  • Средняя область со списком файлов дампов
  • Нижняя область со списком драйверов


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

  • Текст ошибки (Bug Check String) . Здесь выводится описание ошибки согласно классификации MicroSoft. В нашем примере это DRIVER_IRQL_NOT_LESS_OR_EQUAL .
  • Код ошибки (Bug Check Code) . Выводится СТОП-код ошибки - 0x000000d1
  • Драйвер причины (Caused By Driver) . Отображает наименование драйвера либо модуля, который вероятнее всего вызвал ошибку. Заметьте, это 100% виновник ошибки, а лишь вероятный. В нашем примере это E1G6032E.sys
  • Адрес причины (Caused By Address) . Отображает драйвер и сразу после адрес инструкций, вызвавших сбой. У нас это E1G6032E.sys+9ef530/li>
  • Адрес аварии (Crash Address) . Адрес по которому случилась ошибка. В нашем случае ntoskrnl.exe+1509a0 .

Теперь перечислю наиболее важные столбцы из нижней области:

  • Имя файла (File name). Указывается наименование драйвера либо модуля
  • Адрес в стеке (Address In Stack). Выводится адрес памяти драйвера из стека памяти.
  • Описание файла (File Description).
  • Версия файла (File Version). Отображается версия файла драйвера.

Для анализа выделяем нужный файл дампа в средней области окна утилиты. При выделении нижняя область сразу заполняется данными. Смотрим в таблице данные из основных столбцов, которые я привёл выше. В нижней области окна вероятные проблемные драйвера либо модули выделяются красным цветом. Редко, бывают случаи, когда указанный программой в средней области окна драйвер не является источником BSOD ошибки. В таких случаях, среди подсвеченных красным цветом ниже, проблемных драйверов, наверняка присутствует истинный источник синего экрана смерти. В моём случае это: E1G6032E.sys и ntoskrnl.exe . Кстати, оба являются довольно таки распространёнными причинами BSOD.
Если найденные программой источники ошибки вам ни о чём не говорят, то можно просто в поисковике ввести наименование проблемных драйверов и там наверняка найдёте как их побороть.
Для более точного определения проблемных драйверов и модулей можно воспользоваться несколькими способами анализа. Благо в данной статье мы разобрали два наиболее популярных. Следите за публикациями и в дальнейшем выйдет ещё статья про анализ дампов.