Использование дампа памяти для диагностики сбоев. Анализ дампа памяти Что такое дампы памяти windows

Использование дампа памяти для диагностики сбоев. Анализ дампа памяти Что такое дампы памяти windows

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

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

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

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

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

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

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

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

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

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

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

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

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

Дамп памяти (memory dump) - содержимое рабочей памяти процесса, ядра или всей операционной системы, включающий, помимо рабочих областей, дополнительную информацию о состоянии регистров процессора, содержимом стека и прочие служебные структуры.

Для чего нам может потребоваться данное содержимое, то есть дамп памяти Windows ? Пожалуй, наиболее часто дамп памяти используется для изучения причин возникновения системного сбоя (), который явился причиной полного останова операционной системы. В дополнение к этому, состояние памяти может использоваться и для других целей. Немаловажен и тот факт, что дамп памяти - это буквально единственный способ получения информации о любом сбое! А снятие (получение) дампа памяти системы - это, фактически, единственный точный метод получения мгновенного отпечатка (копии) содержимого физической памяти системы.

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

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

Теоретически, статичность (неизменность) "отпечатка" памяти объясняется тем, что когда вызывается функция KeBugCheckEx , выводящая на экран информацию о сбое и стартующая процесс создания дампа памяти, система уже полностью остановлена и содержимое физической памяти записано в блоки, занимаемые на диске файлом подкачки, после чего, уже в процессе последующей загрузки операционной системы оно сбрасывается в файл на системном носителе. Ну а практически один раз наблюдал ситуацию, когда сбоящая материнская плата не давала сохранить дамп памяти: а) подвисая в процессе работы логики сохранения дампа (процесс не доходил до 100%), б) повреждая файл дампа памяти (отладчик ругался на структуры), в) записывая файлы дампов memory.dmp нулевой длины. Поэтому, не смотря на то, что система в момент создания дампа памяти уже полностью остановлена, и работает только аварийный код, сбойное железо может вносить свои коррективы в любую без исключения логику на любом этапе функционирования.
Традиционно, на начальном этапе для сохранения дампа памяти Windows используются блоки диска, выделенные файлу подкачки (pagefile). Затем, после возникновения синего экрана и перезагрузки, данные перемещаются в отдельный файл, а затем файл переименовывается по шаблону, зависящему от типа дампа. Однако, начиная с версии Windows Vista, подобное положение вещей возможно изменить, теперь пользователю дана возможность сохранять выделенный дамп без участия файла подкачки, помещая информацию о сбое во временный файл. Сделано это для того, чтобы исключить ошибки конфигурации, связанные с неправильной настройкой размера и положения файла подкачки, что зачастую приводило к проблемам в процессе сохранения дампа памяти.
Давайте посмотрим, какие же разновидности дампов позволяет нам создавать операционная система Windows:

  • Дамп памяти процесса (приложения);
  • Дамп памяти ядра;
  • Полный дамп памяти (дамп доступной части физической памяти системы).

Все аварийные дампы можно разделить на две основных категории:

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

Конфигурация дампа памяти ядра

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

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

  1. Нажать правой кнопкой мыши на значке "Мой Компьютер" - "Свойства" - "Дополнительные параметры системы" - "Дополнительно".
  2. Кнопка "Пуск" - "Панель управления" - "Система" - "Дополнительные параметры системы" - "Дополнительно".
  3. Сочетание клавиш "Windows" + "Pause" - "Дополнительные параметры системы" - "Дополнительно".

  4. control system.cpl,3
  5. Выполнить в командной строке (cmd):
    SystemPropertiesAdvanced

Результатом описанных действий является открытие окна "Свойства системы" и выбор вкладки "Дополнительно":

После этого в разделе "Загрузка и восстановление" мы нажимаем выбираем "Параметры" и тем самым открываем новое окно под названием "Загрузка и восстановление":

Все параметры аварийного дампа сгруппированы в блоке параметров под названием "Отказ системы". В этом блоке мы можем задать следующие параметры:

  1. Записать события в системный журнал.
  2. Выполнить автоматическую перезагрузку.
  3. Запись отладочной информации.
  4. Файл дампа.
  5. Заменять существующий файл дампа.

Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре "Файл дампа". Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:

Малый дамп памяти (Small memory dump)

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

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

Размещение: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp . Где MMDDYY - месяц, день и год соответственно, NN - порядковый номер дампа.
Объем: Размер зависит от разрядности операционной системы: требуется всего-то 128 килобайт для 32-разрядной и 256 килобайт для 64-разрядной ОС в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Поскольку выставить столь малый размер мы не сможем, то округляем до 1 мегабайта.

Дамп памяти ядра (Kernel memory dump)

Данный тип дампа содержит копию всей памяти ядра на момент сбоя.
Состав:

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

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

Объем: Варьируется в зависимости от размера адресного пространства ядра, выделенной операционной системой и количества драйверов режима ядра. Обычно, требуется около трети объема физической памяти в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Может варьироваться.

Полный дамп памяти (Complete memory dump)

Полный дамп памяти содержит копию всей физической памяти (ОЗУ, RAM) в момент сбоя. Соответственно, в файл попадает и все содержимое памяти системы. Это одновременно преимущество и главный недостаток, поскольку размер его на некоторых серверах с большим объемом ОЗУ может оказаться существенным.
Состав:

  • Все страницы "видимой" физической памяти. Это практически вся память системы, за исключением областей, используемых аппаратной частью: BIOS, пространство PCI и прч.
  • Данные процессов, которые выполнялись в системе в момент сбоя.
  • Страницы физической памяти, которые не отображены на виртуальное адресное пространство, но которые могут помочь в изучении причин сбоя.

В полный дамп памяти не включаются, по-умолчанию, области физической памяти, используемой BIOS.
Размещение: %SystemRoot%\MEMORY.DMP . Предыдущий дамп перезаписывается.
Объем: В файле подкачки (либо в файле, указанном в DedicatedDumpFile) требуется объем, равный размеру физической памяти + 257 мегабайт (эти 257 Мб делятся на некий заголовок + данные драйверов). На деле же, в некоторых ОС, нижний порог файла подкачки можно выставить точно в значение размера физической памяти.

Автоматический дамп памяти (Automatic memory dump)

Начиная с Windows 8/Windows Server 2012, в систему введен новый тип дампа под названием "Автоматический дамп памяти", который устанавливается типом по умолчанию. В этом случае система сама решает, какой дамп памяти записать в ситуации того или иного сбоя. Причем логика выбора зависит от многих критериев, в том числе от частоты "падения" операционной системы.

После изменения конфигурации дампа памяти Windows, может потребоваться перезагрузка компьютера.

Параметры реестра

Раздел реестра, который определяет параметры аварийного дампа:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

Параметры:

Параметр Тип Описание
AutoReboot REG_DWORD Включение/отключение автоматической перезагрузки при возникновении BSOD.
CrashDumpEnabled REG_DWORD Вид создаваемого дампа.
  • 0 - не создавать дамп памяти;
  • 1 - полный дамп памяти;
  • 2 - дамп памяти ядра;
  • 3 - малый дамп памяти;
DumpFile REG_EXPAND_SZ Путь и название дампа памяти ядра и полного дампа памяти.
DumpFilters REG_MULTI_SZ Драйвер-фильтр в стеке драйверов дампа памяти. Позволяет добавлять новый функционал на этапе создания аварийных дампов. Например, шифрование содержимого дампа. Изменять значение не рекомендуется.
LogEvent REG_DWORD Запись события в системный журнал.
MinidumpDir REG_EZPAND_SZ Путь и название малого дампа памяти.
MinidumpsCount REG_DWORD Максимальное количество малых дампов памяти. При превышении начинают затираться более старые версии.
Overwrite REG_DWORD Заменять существующий файл дампа. Только для дампа памяти ядра и полного дампа памяти.
IgnorePagefileSize REG_DWORD Игнорирует стандартный файл подкачки как место для временного (промежуточного) хранения дампа памяти. Указывает на необходимость записать дамп памяти в отдельный файл. Используется совместно с опцией DedicatedDumpFile.
DedicatedDumpFile REG_EZPAND_SZ Путь и название временного альтернативного файла для записи дампа памяти. Во втором проходе данные все равно будут перемещены в DumpFile/MinidumpDir.

Ручное создание дампа памяти

Выше мы описывали настройки для автоматического создания аварийных дампов системы в случае возникновения критической ошибки, то есть необрабатываемого исключения в коде ядра. Но ведь в реальной жизни, помимо падения операционной системы, существуют ситуации, когда необходимо получить дамп памяти системы в конкретный момент времени. Как быть в этом случае? Существуют методы получения мгновенной копии всей физической памяти, например с помощью команды.dump в отладчиках WinDbg/LiveKD. LiveKD - программа, позволяющая запускать отладчик ядра Kd в функционирующей системе в локальном режиме. В отладчике WinDbg тоже имеется подобная возможность. Однако метод получения дампа "на лету" не точен, поскольку дамп создается в этом случае "противоречивый", так как для создания дампа требуется время, а в случае использования отладчика режима ядра система продолжает работать и вносить изменения в страницы памяти.

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

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

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


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

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

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

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

В ОС Windows очень часто случаются ошибки, даже в случае с «чистой» системой. Если обычные ошибки программ решить можно (появляется сообщение о недостающем компоненте), то исправить критические ошибки будет намного сложнее.

Что такое дамп памяти в Windows

Для решения проблем с системой обычно используют аварийный дамп памяти – это снимок части или полного объема оперативной памяти и помещение его на энергонезависимый носитель (жёсткий диск). Другими словами, содержимое оперативной памяти полностью или частично копируется на носитель, и пользователь может провести анализ дампа памяти.

Существует несколько видов дампов памяти:

Малый дамп (Small Memory Dump) – сохраняет минимальный объем ОЗУ, где находятся сведения по критическим ошибкам (BSoD) и компонентах, которые были загружены во время работы системы, например, драйвера, программы. MiniDump хранится по пути C:\Windows\Minidump.

Полный дамп (Complete Memory Dump) – сохраняется полный объем ОЗУ. Это значит, что размер файла будет равен объему оперативной памяти. Если места на диске мало, будет проблематично сохранить, например, 32 Гб. Также бывают проблемы с созданием файла дампа памяти более 4 Гб. Данный вид используется очень редко. Храниться по пути C:\Windows\MEMORY.DMP.

Дамп памяти ядра – сохраняется только информация, относящаяся к ядру системы.

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

Информация в реестре

Если заглянуть в реестр Windows, то можно обнаружить некоторые полезные параметры снимков. Щелкаем сочетание клавиш Win+R, вводим команду regedit и открываем следующие ветки:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

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

  • AutoReboot – активация или отключение перезагрузки после создания синего экрана смерти (BSoD).
  • DumpFile – название видов дампов и расположение.
  • CrashDumpEnabled – номер создаваемого файла, например, число 0 – дамп не создается; 1 – создание полного дампа; 2 – создание дампа ядра; 3 – создание малого дампа.
  • DumpFilters – параметр позволяет добавить новые функции перед созданием снимка. Например, шифрование файла.
  • MinidumpDir – название малого дампа и его расположение.
  • LogEvent – активация записи сведений в системный журнал.
  • MinidumpsCount – задать количество создаваемых малых дампов. (Превышение этого количества будет уничтожать старые файлы и заменять их).
  • Overwrite – функция для полного дампа или системного. При создании нового снимка, предыдущий будет всегда заменяться на новый.
  • DedicatedDumpFile – создание альтернативного файла снимка и указание его пути.
  • IgnorePagefileSize – используется для временного расположения снимка, без использования файла подкачки.

Как это работает

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

Обычно файл сохраняется в выделенном для файла подкачки блоке жёсткого диска, после появления BSoD файл перезаписывается в тот вид, который пользователь сам и настроил (Малый, полный или дамп ядра). Хотя, в современных ОС участие файла подкачки не обязательно.

Как включить дампы

В Windows 7 :

В Windows 8 и 10 :

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

Второй вариант для Wi ndows 10 :


Следует заметить, что в новых версиях Windows 10 появились новые пункты, которых не было в «семерке»:

  • Малый дамп памяти 256 КБ – минимальные данные о сбое.
  • Активный дамп – появился в десятой версии системы и сохраняет только активную память компьютера, ядра системы и пользователя. Рекомендуется использовать на серверах.

Как удалить дамп

Достаточно зайти в каталог, где хранятся снимки памяти и попросту удалить их. Но есть и другой способ удаления – использование утилиты очистки диска:

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

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

Анализ дампа памяти при помощи WinDbg

Скачиваем с официального сайта Microsoft данную программу на шаге 2, где описана «Установка WDK » — https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk .

Чтобы работать с программой еще понадобиться специальный пакет отладочных символов. Он называется Debugging Symbols , раньше его можно было скачать с сайта Microsoft, но теперь они отказались от этой идеи и придется использовать функцию программы File — «Symbol File Path », куда следует вписать следующую строчку и нажать ОК:

set _NT_SYMBOL_PATH=srv*DownstreamStore*https://msdl.microsoft.com/download/symbols

Если не сработало, пробуем вот эту команду:

SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols

Снова нажимаем пункт «File» и выбираем опцию «Save Workspace».

Утилита настроена. Остается указать путь до файлов дампов памяти. Для этого нажимаем File и щелкаем опцию «O pen Crash Dump ». Расположение всех дампов указано в начале статьи.

После выбора закончится анализ и проблемный компонент автоматически будет выделен. Для получения большего количества информации в этом же окошке можно ввести такую команду: !analyze –v

Анализ с помощью BlueScreenView

Загрузить инструмент бесплатно можно с этого сайта — http://www.nirsoft.net/utils/blue_screen_view.html . Установка не требует каких-то навыков. Используется только в Windows 7 и выше.

Запускаем и настраиваем. Нажмите «Настройки» (Options) – «Дополнительные параметры » (Advanced Options). Выберите первый пункт «Загружать МиниДампы из этой папки » и указываем каталог — C:\WINDOWS\Minidump . Хотя можно просто нажать кнопку «По умолчанию». Нажимаем ОК.

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

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

Теперь нажимаем «Файл» и выбираем, например, пункт «Найти в Go ogle код ошибки + драйвер ». Если нашли нужный драйвер, установите и перезагрузите компьютер. Возможно ошибка исчезнет.

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

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 , считая, что работать с ними слишком трудно. Трудно, но можно: даже если, например, анализ одного из десяти окажется успешным, – усилия, потраченные на освоение простейших приёмов анализа аварийных , будут не напрасны!..



top