Содержание
Аварийный дамп памяти
: / 295
647965
Все Windows-системы при обнаружении фатальной ошибки делают аварийный дамп (снимок) содержимого оперативной памяти и сохраняет его на жесткий диск. Существуют три типа дампа памяти:
Полный дамп памяти – сохраняет все содержимое оперативной памяти. Размер снимка равен размеру оперативной памяти + 1 Мб (заголовок). Используется очень редко, так как в системах с большим объемом памяти размер дампа будет слишком большим.
Дамп памяти ядра – сохраняет информацию оперативной памяти, касающуюся только режима ядра. Информация пользовательского режима не сохраняется, так как не несет в себе информации о причине краха системы. Объем файла дампа зависит от размера оперативной памяти и варьируется от 50 Мб (для систем с 128 Мб оперативной памяти) до 800 Мб (для систем с 8 Гб оперативной памяти).
Малый дамп памяти (мини дамп) – содержит довольно небольшое количество информации: код ошибки с параметрами, список драйверов загруженных в оперативную память на момент краха системы и т.д., но этих сведений достаточно, для определения сбойного драйвера. Еще одним преимуществом данного вида дампа является маленький размер файла.
Настройка системы
Для выявления драйвера вызвавшего синий экран нам достаточно будет использовать малый дамп памяти. Для того чтобы система при крахе сохраняла мини дамп необходимо выполнить следующие действия:
Для Windows Xp | Для Windows 7 |
|
|
Проделав все манипуляции, после каждого BSoD в папке C:\WINDOWS\Minidump будет сохраняться файл с расширение .dmp. Советую ознакомиться с материалом «Как создать папку». Также можно установить галочку на “Заменить существующий файл дампа”. В этом случае каждый новый аварийный дамп будет записываться поверх старого. Я не советую включать данную опцию.
Анализ аварийного дампа памяти с помощью программы BlueScreenView
Итак, после появления синего экрана смерти система сохранила новый аварийный дамп памяти. Для анализа дампа рекомендую использовать программу BlueScreenView. Её можно бесплатно скачать тут. Программа довольно удобная и имеет интуитивный интерфейс.
После её установки первое, что необходимо сделать – это указать место хранение дампов памяти в системе. Для этого необходимо зайти в пункт меню “Options” и выбрать “Advanced Options”. Выбираем радиокнопку “Load from the following Mini Dump folder” и указываем папку, в которой хранятся дампы.
Если файлы хранятся в папке C:\WINDOWS\Minidump можно нажатием кнопки “Default”. Нажимаем OK и попадаем в интерфейс программы.
Программа состоит из трех основных блоков:
- Блок главного меню и панель управления;
- Блок списка аварийных дампов памяти;
- В зависимости от выбранных параметров может содержать в себе:
- список всех драйверов находящихся в оперативной памяти до появления синего экрана (по умолчанию);
- список драйверов находящихся в стеке оперативной памяти;
- скриншот BSoD;
- и другие значения, которые мы использовать не будем.
В блоке списка дамп памяти (на рисунке помечен цифрой 2) выбираем интересующий нас дамп и смотрим на список драйверов, которые были загружены в оперативную память (на рисунке помечен цифрой 3). Розовым цветом окрашены драйвера, которые находились в стеке памяти. Они то и являются причиной появления BSoD.
Далее переходите в Главное меню драйвера, определяйте к какому устройству или программе они принадлежат. В первую очередь обращайте внимание на не системные файлы, ведь системные файлы в любом случае загружены в оперативной памяти. Легко понять, что на изображении сбойным драйвером является myfault.sys. Скажу, что это программа была специально запущена для вызова Stop ошибки.
После определения сбойного драйвера, необходимо его либо обновить, либо удалить из системы.
Для того чтобы программа показывала список драйверов находящихся в стеке памяти во время возникновения BSoD необходимо зайти в пункт меню “Options” кликаем на меню “LowerPaneMode” и выбираем “OnlyDriversFoundInStack” (или нажмите клавишу F7), а для показа скриншота ошибки выбираем “BlueScreeninXPStyle” (F8). Что бы вернуться к списку всех драйверов, необходимо выбрать пункт “AllDrivers” (F6).
Буду признателен, если воспользуетесь кнопочками:
Источник: http://BsodStop.ru/poleznye-stati/analiz-dampa-pamyati
Проводим анализ дампа памяти или как выявить причину BSoD?
Здравствуйте друзья, сегодня разберем интересную тему, которая поможет вам в будущем при появлении синего экрана смерти (BSoD).
Как и мне, так и многим другим пользователям приходилось наблюдать появление экрана с синим фоном, на котором что-то написано (белым по синему). Данное явление говорит о критической неполадке, как в программном обеспечении, например, конфликт драйверов, так и в физической неисправности какого-то компонента компьютера.
Недавно у меня снова появился голубой экран в Windows 10, но я быстро от него избавился и скоро об этом вам расскажу.
Хотите смотреть фильмы онлайн в хорошем качестве? Тогда переходите по ссылке.
Итак, большинство пользователей не знают, что BSoD можно анализировать, чтобы впоследствии понять проблемы критической ошибки. Для таких случаев Windows создает на диске специальные файлы – дампы памяти, их то мы и будем анализировать.
Есть три типа дампа памяти:
Полный дамп памяти – эта функция позволяет полностью сохранить содержимое оперативной памяти. Он редко используется, так как представьте, что у вас 32 Гб оперативной памяти, при полном дампе весь этот объем сохранится на диске.
Дамп ядра – сохраняет информацию о режиме ядра.
Малый дамп памяти – сохраняет небольшой объем информации о ошибках и загруженных компонентов, которые были на момент появления неисправности системы. Мы будем использовать именно этот тип дампа, потому что она даст нам достаточное количество сведений о BSoD.
Расположение, как малого, так и полного дампа отличается, например, малый дамп находится по следующему пути: %systemroot%\minidump.
Полный дамп находится здесь: %systemroot%.
Для анализа дампов памяти существуют различные программы, но мы воспользуемся двумя. Первая — Microsoft Kernel Debuggers, как понятно из названия утилита от Microsoft. Скачать ее можно с официального сайта. Вторая программа – BlueScreenView, бесплатная программка, скачиваем отсюда.
Анализ дампа памяти с помощью Microsoft Kernel Debuggers
Для разных версий систем нужно скачивать свой тип утилиты. Например, для 64-х разрядной операционной системы, нужна 64-битовая программа, для 32-х разрядной – 32-битная версия.
Это еще не все, вам нужно скачать и установить пакет отладочных символов, нужные для программы. Называется Debugging Symbols. Каждая версия данного пакета тоже скачивается под определённою ОС, для начала узнайте какая у вас система, а потом скачивайте. Дабы вам не искать где попало эти символы, вот ссылка на скачивание. Установка, желательно, должна производиться по этому пути: %systemroot%\symbols.
Теперь можно запускать наш отладчик, окно которого будет выглядеть вот так:
Прежде чем проанализировать дампы мы кое-что настроим в утилите. Во-первых, нужно указать программе, куда мы установили отладочные символы. Для этого нажимаем на кнопку «File» и выбираем пункт «Symbol File Path», потом указываем путь до символов.
Программа позволяет извлекать символы прямо из сети, поэтому вам даже не придется их скачивать (извините те, кто уже скачал). Они буду браться с сервером Microsoft, поэтому все безопасно. Итак, вам нужно снова открыть «File», потом «Symbol File Path» и ввести следующую команду:
SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols
Таким образом мы указали программе, что символы должны браться из сети. Как только мы это сделали нажимаем «File» и выбираем пункт «Save Workspace», потом жмем ОК.
Вот и все. Мы настроили программу на нужный лад, теперь приступаем к анализу дампов памяти. В программе нажимаем кнопочку «File», потом «Open Crash Dump» и выбираем нужный файл.
Kernel Debuggers начнет анализ файла и после этого выведет результат о причине ошибки.
В появившемся окне можно вводить команды. Если мы введем !analyze –v, то получим больше информации.
Вот и все с этой программой. Чтобы остановить работу отладчика, выберите «Debug» и пункт «Stop Debugging».
Анализ дампа памяти с помощью BlueScreenView
Для анализа различных ошибок и BSoD подойдет и программа BlueScreenView, которая имеет простой интерфейс, поэтому проблем с освоением возникнуть не должно.
Скачайте программу по указанной выше ссылке и установите. После запуска утилиты нужно ее настроить. Зайдите в параметры: «Настройки» — «Дополнительные параметры». Откроется небольшое окошко, в котором есть пару пунктов. В первом пункте нужно указать местонахождение дампов памяти. Обычно они находятся по пути C:\WINDOWS\Minidump. Тогда просто нажмите кнопку «По умолчанию».
Что можно видеть в программе? У нас есть пункты меню, часть окна с названиями файлов дампов и вторая часть окна – содержимое дампов памяти.
Как я говорил в начале статьи, дампы могут хранить драйвера, сам скриншот «экрана смерти» и другая полезная информация, которая нам может пригодиться.
Итак, в первой части окна, где файлы дампов, выбираем нужный нам дамп памяти. В следующей части окна смотрим на содержимое. Красноватым цветом помечены драйвера, находившиеся в стеке памяти. Как раз они и есть причина синего экрана смерти.
В интернете можно найти все о коде ошибке и драйвере, который может быть виной BSoD. Для этого нажимаем «Файл», а потом «Найти в Google код ошибки + Драйвер».
Можно сделать показ только драйверов, которые были на момент появления ошибки. Для этого нужно нажать «Настройки» — «Режим нижнего окна» — «Только драйвера, найденные в крэш-стеке». Либо нажать клавишу F7.
Чтобы показать скриншот BSoD нажмите клавишу F8.
Для показа всех драйверов и файлов нажимаем F6.
Ну вот собственно и все. Теперь вы знаете, как узнать о проблеме «Синего экрана смерти», и в случае чего найти решение в интернете, либо на этом сайте. Можете предлагать свои коды ошибок, а я постараюсь писать для каждой статьи по решению проблемы.
Что такое Зеленый экран смерти GSOD
Источник: https://computerinfo.ru/analiz-dampa-pamyati/
Глава 13. Тестирование и отладка
Несмотря на ужасающее название «system crash», системный сбой является вполне заурядным событием. Операционная система всего лишь сообщает, что она перешла в такое внутреннее состояние, которое несовместимо с возможностью продолжения работы. Следовательно, полагает операционная система, лучше прекратить работу сейчас, нежели функционировать с этим ошибочным состоянием. И это решение во многих случаях предпочтительнее.
Кто инициирует объявление системного сбоя?
Во-первых, некоторые компоненты уровня ядра, которые «по долгу службы» обнаружили некорректное состояния, могут решить, что пришла пора «сказать стоп». Например, если Диспетчер ввода/вывода обнаруживает, что драйвер передал в вызов IoCompleteRequest завершенный ранее пакет IRP, то Диспетчер ввода/вывода непременно вызовет этот самый сигнал фатального системного сбоя.
Второй сценарий сложнее. Программный код, работающий в режиме ядра, является непосредственным источником ошибки и генерирует исключение (exception) во время какой-либо операции. Если процедура уровня ядра, которая выполнила эту запрещенную операцию, непосредственно не перехватит это исключение, то результатом будет необрабатываемое исключение режима ядра. Когда это происходит, в работу включается стандартный обработчик исключений в ядре операционной системы, который инициирует системный останов.
Независимо от того, какие подсистемы ядра выступают инициатором системного останова, реально выполняется вызов одной из двух функций:
VOID KeBugCheck( BugChCode );VOID KeBugCheckEx( BugChCode, Arg1, Arg2, Arg3, Arg4 );
Любая из этих функций вызывает останов системы и (необязательно) сохраняет файл со снимком памяти (crash dump file) на жестком диске. В зависимости от выбора системного администратора, операционная система после этого прекращает работу, перезапускается или запускает отладку ядра (kernel's debug client).
Аргумент BugChCode в вызове KeBugCheck указывает причину сбоя в виде значения типа DWORD. Этот аргумент известен также под именем «bugcheck code». Дополнительные 4 аргумента в функции KeBugCheckEx дают возможность видеть в диагностическом сообщении дополнительную информацию (что, возможно, позволит удачнее локализовать источник сбоя).
Коды «bugcheck codes» могут быть использованы из числа определенных Microsoft (см. файл BUGCODES.h), либо можно определить в драйвере дополнительно.
Драйвер может выполнить вызов любой из этих двух функций. Вообще говоря, общепринятой практикой для отладочных версий драйвера является организация системных STOP-сообщений в критических точках кода.
Голубой экран смерти (BSOD)
Системное сообщение об останове системы — это появляющееся на голубом фоне сообщение, которое носит закрепившееся за ним название «Blue Screen Of Death» (BSOD). В разных версиях NT вид BSOD сообщений сильно менялся. В русифицированных версиях зачастую на экране видна абракадабра вместо текста (из-за неверной кодировки), что, однако, не должно сильно обременять разработчика. Главной информацией являются две строки, содержащие код ошибки и некоторые параметры сбоя (шестнадцатеричные числа), например:
DRIVER_IRQL_NOT_LESS_OR_EQUAL*** STOP: 000000Dl (00000000 00000002 00000000 F8B57624)*** Example.sys — address F8B57624 base at F8B57000 Datestamp 3e6da099
Сообщение код «bugcheck code», указанный в текстовой форме (DRIVER_IRQL_NOT_LESS_OR_EQUAL), его шестнадцатеричное значение (здесь 000000D1, после слова STOP) и четыре аргумента, переданные в вызове KeBugCheckEx. B зависимости от кода интерпретируется значение остальных 4-х аргументов (см. Приложение А).
Коду 0xD1 соответствует DRIVER_IRQL_NOT_LESS_OR_EQUAL. Приложение А указывает, что код 0xD1 означает ошибку, связанную с обращением к отсутствующей в физической памяти странице (page fault) на уровне IRQL равном DISPATCH_LEVEL или выше. Кроме того, при этом коде ошибки можно сказать, что четыре аргумента KeBugCheckEx означают следующее:
Arg1: Ссылочный адрес (обращение к которому вызвало сбой) 00000000Arg2: Текущий IRQL уровень 2Arg3: Тип доступа 0 (что означает «чтение»)Arg4: Адрес инструкции, которая вызвала сбой 0xF8B57624
Анализ информации Crash Dump файлов
Когда происходит фатальный сбой системы, операционная система может (при определенных настройках системы) сохранить состояние системы в момент сбоя в файле на жестком диске. Чтобы это выполнялось, в апплете Пуск — Настройка — Панель Управления — Система — Дополнительно — Загрузка и восстановление — Параметры (рисунок 13.3) необходимо ввести приемлемые данные. Фиксирование состояние системы в момент сбоя позволит затем вернуться к анализу причин сбоя.
Рис. 13.3 Окно системного апплета для установки параметров crash dump файла |
При помощи отладчика WinDbg можно проанализировать состояние системы в момент сбоя по содержимому crash dump файла. Там можно обнаружить всю информацию, которая была бы доступна отладчику, если бы он оказался включенным в момент сбоя. Это тип экспертизы позволяет добывать убедительные доказательства причин, приведших к фатальному сбою. Во время анализа необходимо установить:
- Какой драйвер выполнялся в момент сбоя?
- Какую операцию пытался выполнить драйвер в момент сбоя?
- Каково содержимое структуры расширения объекта устройства в момент сбоя?
- Какой объект устройства работал?
После запуска WinDbg необходимо открыть crash dump файл (полученный с целевого компьютера) для анализа, выбрав пункт меню File и затем Open Crash Dump. После выбора и загрузки необходимого файла, на экране появится информация следующего (например) типа:
Windows XP Kernel Version 2600 UP Free x86 compatibleKernel base = 0x804d4000 PsLoadedModuleList = 0x8054be30Bufcheck 000000Dl : 00000000 00000002 00000000 F8B57624. . .
Как видим, начальная информация показывает те же данные, что и сообщение экрана BSOD. Не должно вводить в заблуждение сообщение о не перехваченном исключении с кодом 0x80000003. Это точка прерывания, используемая собственно KeBugCheck для останова системы, поэтому не следует придавать ей значения.
Следует отметить, что в отсутствие отладочных символов операционной системы картина получается безрадостной. Распечатка сообщений WinDbg для этого случая приводится ниже.
Loading Dump File [E:\SystemCrashDump\MEMORY.DMP]Kernel Dump File: Full address space is available Microsoft (R) Windows Kernel Debugger Version 3.0.0020.0Copyright (c) Microsoft Corporation. All rights reserved. Loaded dbghelp extension DLLLoaded ext extension DLLLoaded exts extension DLLLoaded kext extension DLLLoaded kdexts extension DLLSymbol search path is: *** Invalid *** : Verify _NT_SYMBOL_PATH settingExecutable search path is:********************************************************************** Symbols can not be loaded because symbol path is not initialized. ** ** The Symbol Path can be set by: ** using the _NT_SYMBOL_PATH environment variable. ** using the -y argument when starting the debugger. ** using .sympath and .sympath+ ************************************************************************* ERROR: Symbol file could not be found. Defaulted to export symbols forntoskrnl.exe -Windows XP Kernel Version 2600 (Service Pack 1) UP Free x86 compatibleBuilt by: 2600.xpspl.020828-1920Kernel base = 0x804d4000 PsLoadedModuleList = 0x8054be30Debug session time: Fri Jun 13 02:20:17 2003System Uptime: 0 days 3:15:59********************************************************************** Symbols can not be loaded because symbol path is not initialized. ** ** The Symbol Path can be set by: ** using the _NT_SYMBOL_PATH environment variable. ** using the -y argument when starting the debugger. ** using .sympath and .sympath+ ********************************************************************** WaitForEvent failedWARNING: Stack unwind information not available. Following frames may be wrong.WARNING: Stack unwind information not available. Following frames may be wrong.******************************************************************************** ** Bugcheck Analysis ** ******************************************************************************** ***** Kernel symbols are WRONG. Please fix symbols to do bugcheck analysis.******************************************************************************** ** Bugcheck Analysis ** ********************************************************************************Bugcheck code 000000D1Arguments 00000000 00000002 00000000 f8b57624 ChildEBP RetAddr Args to ChildWARNING: Stack unwind information not available. Following frames may be wrong.f2270b54 804dce53 0000000a 00000000 00000002 ntoskrnl!KeBugCheckEx+0xl9f2270b70 00000000 00000000 00000000 00000000 ntoskrnl!Kei386EoiHelper+0x251c eax=ffdff13c ebx=0000000a ecx=00000000 edx=40000000 esi=f8b57624 edi=00000000eip=805266db esp=f2270b3c ebp=f2270b54 iopl=0 nv up ei ng nz na po nccs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286ntoskrnl!KeBugCheckEx+19:805266db 5d pop ebp
Самой важной информацией, которую можно извлечь из приведенного выше набора строк — это код ошибочной ситуации (bugcheck code), равный 0x00D1. Остальные сведения, связанные с раскруткой стека вызовов в данной ситуации недоступны. Хотя именно данная информация особенно ценна в crash dump файлах.
Источник: https://drp.su/ru/driver_dev/13_04.htm
Аварийный дамп памяти Windows
Данная небольшая заметка ставит целью своей показать, каким же образом можно сконфигурировать систему, чтобы получить в своё распоряжение аварийный дамп памяти Windows, то есть дамп, который может быть создан в случае возникновения критического сбоя, характеризующегося появлением синего экрана смерти (BSOD). Что же такое дамп вообще, для чего он нам требуется и что из себя представляет, какие проблемы он призван решить и какую информацию содержит в себе?
Дамп памяти (memory dump) — содержимое рабочей памяти процесса, ядра или всей операционной системы, включающий, помимо рабочих областей, дополнительную информацию о состоянии регистров процессора, содержимом стека и прочие служебные структуры.
Для чего нам может потребоваться данное содержимое, то есть дамп памяти Windows? Пожалуй, наиболее часто дамп памяти используется для изучения причин возникновения системного сбоя (BSOD), который явился причиной полного останова операционной системы.
В дополнение к этому, состояние памяти может использоваться и для других целей.
Немаловажен и тот факт, что дамп памяти — это буквально единственный способ получения информации о любом сбое! А снятие (получение) дампа памяти системы — это, фактически, единственный точный метод получения мгновенного отпечатка (копии) содержимого физической памяти системы.
Чем точнее содержимое дампа будет отражать состояние памяти в момент сбоя, тем подробнее мы сможем проанализировать аварийную ситуацию. Поэтому крайне важно получить именно актуальную копию физической памяти системы в строго определенный момент времени, непосредственно предшествующий сбою.
А единственный способ сделать это — создать полный аварийный дамп памяти.
Причина достаточно тривиальна — когда происходит создание аварийного дампа памяти системы, в результате ли сбоя, либо в следствии искусственно смоделированной ситуации, система в этот момент получения управления аварийными функциями (KeBugCheckEx) пребывает в абсолютно неизменном (статичном) состоянии, поэтому между моментом возникновения сбоя и моментом окончания записи данных на носитель ничто не изменяет содержимое физической памяти, и она в оригинальном состоянии записывается на диск. Ну это в теории, а в жизни изредка, но встречаются ситуации, что по причине неисправных аппаратных компонентов, сам дамп памяти может быть поврежден, или в процессе записи дампа станция может подвиснуть.
В подавляющем большинстве случаев, с момента начала процесса создания аварийного дампа памяти, и до момента завершения записи содержимого памяти на диск, информация в памяти остается неизменной.
Теоретически, статичность (неизменность) «отпечатка» памяти объясняется тем, что когда вызывается функция KeBugCheckEx, выводящая на экран информацию о сбое и стартующая процесс создания дампа памяти, система уже полностью остановлена и содержимое физической памяти записано в блоки, занимаемые на диске файлом подкачки, после чего, уже в процессе последующей загрузки операционной системы оно сбрасывается в файл на системном носителе.
Ну а практически один раз наблюдал ситуацию, когда сбоящая материнская плата не давала сохранить дамп памяти: а) подвисая в процессе работы логики сохранения дампа (процесс не доходил до 100%), б) повреждая файл дампа памяти (отладчик ругался на структуры), в) записывая файлы дампов memory.dmp нулевой длины.
Поэтому, не смотря на то, что система в момент создания дампа памяти уже полностью остановлена, и работает только аварийный код, сбойное железо может вносить свои коррективы в любую без исключения логику на любом этапе функционирования.
Традиционно, на начальном этапе для сохранения дампа памяти Windows используются блоки диска, выделенные файлу подкачки (pagefile).
Затем, после возникновения синего экрана и перезагрузки, данные перемещаются в отдельный файл, а затем файл переименовывается по шаблону, зависящему от типа дампа. Однако, начиная с версии Windows Vista, подобное положение вещей возможно изменить, теперь пользователю дана возможность сохранять выделенный дамп без участия файла подкачки, помещая информацию о сбое во временный файл.
Сделано это для того, чтобы исключить ошибки конфигурации, связанные с неправильной настройкой размера и положения файла подкачки, что зачастую приводило к проблемам в процессе сохранения дампа памяти.
Давайте посмотрим, какие же разновидности дампов позволяет нам создавать операционная система Windows:
- Дамп памяти процесса (приложения);
- Дамп памяти ядра;
- Полный дамп памяти (дамп доступной части физической памяти системы).
Все аварийные дампы можно разделить на две основных категории:
- Аварийные дампы с информацией о возникшем исключении. Обычно создаются в автоматическом режиме, когда в приложении/ядре возникает необрабатываемое исключение (unhandled exception) и, соответственно, может быть вызван системный (встроенный) отладчик. В этом случае информация об исключении записывается в дамп, что упрощает определение типа исключения и места возникновения при последующем анализе.
- Аварийные дампы без информации об исключении. Обычно создаются пользователем в ручную, когда необходимо создать просто мгновенный снимок процесса для последующего анализа. Анализ этот подразумевает не определение типа исключения, поскольку никакого исключения и не возникало, а анализ совершенно другого рода, например изучение структур данных процесса и прочее.
Конфигурация дампа памяти ядра
Вы должны быть залогинены под административной учетной записью для выполнения действий, описываемых в данном разделе.
Давайте непосредственно перейдем к конфигурированию параметров аварийного дампа памяти Windows. Для начала, нам необходимо зайти в окно свойств системы одним и приведенных способов:
- Нажать правой кнопкой мыши на значке «Мой Компьютер» — «Свойства» — «Дополнительные параметры системы» — «Дополнительно».
- Кнопка «Пуск» — «Панель управления» — «Система» — «Дополнительные параметры системы» — «Дополнительно».
- Сочетание клавиш «Windows» + «Pause» — «Дополнительные параметры системы» — «Дополнительно».
- Выполнить в командной строке (cmd):
control system.cpl,,3 - Выполнить в командной строке (cmd):
SystemPropertiesAdvanced
Результатом описанных действий является открытие окна «Свойства системы» и выбор вкладки «Дополнительно»:
После этого в разделе «Загрузка и восстановление» мы нажимаем выбираем «Параметры» и тем самым открываем новое окно под названием «Загрузка и восстановление»:
Все параметры аварийного дампа сгруппированы в блоке параметров под названием «Отказ системы». В этом блоке мы можем задать следующие параметры:
- Записать события в системный журнал.
- Выполнить автоматическую перезагрузку.
- Запись отладочной информации.
- Файл дампа.
- Заменять существующий файл дампа.
Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре «Файл дампа». Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:
Малый дамп памяти (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), поскольку обычно системный сбой инициируется кодом режима ядра.
Размещение: %SystemRoot%\MEMORY.DMP. Предыдущий дамп перезаписывается.
Объем: Варьируется в зависимости от размера адресного пространства ядра, выделенной операционной системой и количества драйверов режима ядра.
Обычно, требуется около трети объема физической памяти в файле подкачки (либо в файле, указанном в 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 | Вид создаваемого дампа.
|
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, я выкладываю здесь готовые .reg файлы, по одному файлу на каждый из режимов записи:
Скачать: Малый дамп памяти
Скачать: Дамп памяти ядра
Скачать: Полный дамп памяти
Источник: http://datadump.ru/windows-crash-dump/
Как анализировать синий экран dump memory в Windows
Как анализировать синий экран dump memory в Windows-01
Синий экран смерти или как его еще называют BSOD, может изрядно подпортить жизнь как компьютеру так и серверу, а еще выяснилось и виртуальной машине. Сегодня расскажу как анализировать синий экран dump memory в Windows, так как правильная диагностика и получение причины из за чего не работает ваша система, 99 процентов ее решения, тем более системный инженер, просто обязан уметь это делать, да и еще в кратчайшие сроки, так как от этого бизнес может в следствии простоя сервиса, терять кучу денег.
BSOD расшифровка
Давайте для начала разберем, что означает данная аббревиатура, BSOD от английского Blue Screen of Death или еще режим STOP ошибки.
Ошибки синего экрана смерти возникают по разным причинам, среди которых могут быть проблемы с драйверами, может быть какое то сбойное приложение, или сбойный модуль оперативной памяти. Как только у вас появился синий экран в Windows, то ваша система автоматически создаст файл crash memory dump, который мы и будем анализировать.
Как настроить создание memory dump
По умолчанию windows при синем экране создает аварийный дамп файл memory.dmp, сейчас покажу как он настраивается и где хранится, я буду показывать на примере Windows Server 2008 R2, так как у меня недавно была задача по изучению вопроса синего экрана в виртуальной машине. Для того чтобы узнать где настроен dump memory windows, открываем пуск и щелкаем правым кликом по значку Компьютер и выбираем свойства.
Как анализировать синий экран dump memory в Windows-Свойства компьютера
Далее идем в пункт Дополнительные параметры системы
Как анализировать синий экран dump memory в Windows-параметры системы
Переходим во вкладку Дополнительно-Загрузка и восстановление. Жмем кнопку Параметры
Как анализировать синий экран dump memory в Windows-Загрузка и восстановление
Где хранится файл memory.dmp
и видим, что во первых стоит галка выполнить автоматическую перезагрузку, для записи отладочной информации, выбрано Дамп памяти ядра и ниже есть пусть куда сохраняется дамп памяти %SystemRoot%\MEMORY.DMP
Как анализировать синий экран dump memory в Windows-05
Перейдем в папку c:\windows\ и найдем файл MEMORY.DMP в нем содержаться коды синего экрана смерти
Как анализировать синий экран dump memory в Windows-memory.dmp
Как настроить mini dump
В малый дамп памяти тоже записываются ошибки синего экрана смерти, настраивается он там же, нужно только его выбрать.
Как анализировать синий экран dump memory в Windows-07
Хранится он в папке c:\windows\minidump. Преимущество в том, что он занимает меньше места и на каждый синий экран создается отдельным файлом. Всегда можно просмотреть историю появлений синего экрана.
Как анализировать синий экран dump memory в Windows-08
Теперь когда мы разобрались где искать файл memory dump, нужно научиться его интерпритировать и понимать причину из за чего происходит синий экран смерти. В решении этой задачи нам поможет Microsoft Kernel Debugger. Скачать Microsoft Kernel Debugger можно с официального сайта, главное выберите нужную версию ОС если кому то влом, то можете скачать с яндекс диска по прямой ссылке. Так же он входит в состав ADK.
Как установить Microsoft Kernel Debugger
Скачиваем Microsoft Kernel Debugger, в итоге у вас будет маленький файл который позволит скачать из интернета все что вам нужно. Запускаем его.
Как установить Microsoft Kernel Debugger-01
присоединяться к программе по улучшению качества участвовать не будем
Как установить Microsoft Kernel Debugger-02
жмем Accept и соглашаемся с лицензией
Как установить Microsoft Kernel Debugger-соглашаемся с лицензией
Далее выбираем компонент и жмем install
Как установить Microsoft Kernel Debugger-04
начнется установка Microsoft Kernel Debugger
Как установить Microsoft Kernel Debugger-установка MKD
Видим, что Microsoft Kernel Debugger успешно установлен
Как установить Microsoft Kernel Debugger-06
После чего видим, что в пуске появилась папка Debugging Tools for Windows как для 32 так и для 64 битных систем.
Как установить Microsoft Kernel Debugger-07
Помимо самого пакета Debugging Tools for Windows, также понадобятся набор отладочных символов — Debugging Symbols. Набор отладочных символов специфичен для каждой ОС, на которой был зафиксирован BSoD. Потому придется загрузить набор символов для каждой ОС, анализировать работу которой Вам придется.
Для 32-разрядной Windows XP потребуются набор символов для Windows XP 32-бит, для 64-разрядной ОС потребуются набор символов для Windows XP 64-бит. Для других ОС семейства Windows наборы символов подбираются сообразно такому же принципу. Загрузить отладочные символы можно отсюда.
Устанавливать их рекомендуется по адресу %systemroot%\symbols хотя мне нравится устанавливать их в отдельные папки и не захламлять папку Windows.
Анализ синего экрана в Debugging Tools
После установки Debugging Symbols под систему на которой был синий экран смерти запускаем Debugging Tools
Как установить Microsoft Kernel Debugger-Запуск
Перед анализом содержимого дампа памяти, потребуется провести небольшую настройку отладчика. Конкретно — сообщить программе, по какому пути следует искать отладочные символы. Для этого выбираем в меню File > Symbol File Path…
Как установить Microsoft Kernel Debugger-09
Нажимаем кнопку Browse…
Как установить Microsoft Kernel Debugger10
и указываем папку, в которую мы установили отладочные символы для рассматриваемого дампа памяти, можно указать несколько папок через запятую и можно запрашивать информацию о требуемых отладочных символах прямо через Интернет, с публичного сервера Microsoft. Таким образом у вас будет самая новая версия символов. Сделать это можно следующим образом — в меню File > Symbol File Path… вводим:
SRV*%systemroot%\symbols*http://msdl.microsoft.com/download/symbols
Как установить Microsoft Kernel Debugger-11
Как анализировать синий экран смерти
Копируем с компьютера где выскочил синий экран, файл memory.dmp или minidump, и открываем его, выбираем в меню File > Open Crash Dump… и выбираем требуемый для рассмотрения файл.
Как анализировать синий экран смерти-01
Выбираем для примера minidump
Как анализировать синий экран смерти-открываем minidump
Начнется анализ минидампа, видим появилась ссылка на ошибку, щелкаем по ней для более детальной информации о синем экране.
Как анализировать синий экран смерти-03
И видим сбойное приложение которое крушит вашу систему, так же можно еще детальнее посмотреть в чем дело, ткнув ссылку.
Как анализировать синий экран смерти-04
Получите более детальную информацию по причине синего экрана.
Как анализировать синий экран смерти-05
Если открыть memory.dmp то вы получите подобную картину и видим почему синий экран у вас появился.
Как анализировать синий экран смерти-06
Ткнув по ссылке в логе вы получаете самую детальную информацию об ошибке.
Как анализировать синий экран смерти-07
Вот так вот просто диагностировать и устранить синий экран смерти.
Материал сайта pyatilistnik.org
Источник: http://pyatilistnik.org/kak-analizirovat-siniy-ekran-dump-memory-v-windows/
Windows, Синий экран (BSOD) и борьба с его причинами
И снова всем привет.
Думаю тема в заголовке мало кому может показаться совсем незнакомой, во всяком случае большинству пользователей операционной системы Windows, понятие синий
экран смерти (Blue Screen Of Death) известно чуть ли не с пеленок с самого первого выпуска этой популярной в народе ОС.
Так называемый «синий экран» (BSOD) появляется на мониторе компьютера в тех случаях, когда операционная система выполнила недопустимую ошибку и ее работа была остановлена, а сам экран с синим фоном как правило представляет собой служебный отчет, в котором содержится краткий анализ проблемы, с выводом данных отладки о вероятных причинах системного сбоя.
Чаще всего причиной подобных сбоев являются некорректно работающие драйверы и их вероятные конфликты при использовании ресурсов компьютера, в некоторых случаях вероятно имеет место аппаратная неисправность отдельных узлов компьютера, перегрев важных устройств чипсета и т..п.
Но вся сложность в определении технических подробностей о неполадках заключается в том, что данные отчета не представлены в явном виде, который был бы понятен обычному пользователю.
Фактически сам синий экран не несет почтиникакой информации, кроме непосредственно кода ошибки, а также само уведомление, что система была остановлена.
Ваш капитан очевидность.
Чтобы внести ясность в этот вопрос и рассказать о путях решения подобных проблем без традиционной переустановки Windows, быласоздана статья, с которой вы можете ознакомиться ниже. Текст статьи фактически представляет собой объединенный перепост
нескольких меньших по объему статей с других ресурсов в сети, на которые в самом конце будут даны ссылки.
Часть первая — подготовка системы
Пойдем в хронологическом порядке и рассмотрим в начале те меры, которые надо принять, чтобы ваша система записывала журнал событий во время сбоев.
Далее описаны два способа настройки журналирования событий сбоев.
Первый способ (Windows XP):
Отключите автоматическую перезагрузку системы. Для этого:
- выберите Пуск-Выполнить… либо нажмите сочетание клавиш «Win»+»R»
- введите строку:
wmic recoveros set AutoReboot = False
При следующем падении системы обратите внимание на код ошибки и запишите. Код ошибки расположен после слова «STOP»
Второй способ:
- нажмите сочетание клавиш «Win» + «Pause»
- в Windows 7 и Vista щелкните ссылку «Дополнительные параметры системы»
- на вкладке Дополнительно нажмите кнопку Параметры в разделе «Загрузка и восстановление»:
снимите флажок «Выполнять автоматическую перезагрузку» - поставьте флажок «Записать события в системный журнал»
- в выпадающем списке «Запись отладочной информации» установите значение «Малый дамп памяти (256 КБ)» (для Windows 7)
- или «Малый дамп памяти (64 КБ)» (для Windows XP)
Когда вы снова столкнетесь с системной ошибкой и вовода BSOD, номер ошибки Вы увидите на синем после слова «STOP» и сможете его записать.
Дальше этот номер можно задать в качестве ключевого слова в любом интернет поисковике, и следуя результатам поиска, найти подходящий к вашему случаю вариант, из тех что ранее были описаны в сети другими людьми.
Затем вы можете прислать в службу поддержки обслуживающей организации, файл минидампа для анализа проблемы.
Для этого:
— перейдите в папку С:\Windows\Minidump\
где диск C: — диск на который установлена операционная система.
Для создания zip-архива нажмите на файл (в данном случае файл минидампа *.dmp например, 032912-19827-01.dmp) правой клавишей
мыши и в контекстном меню выберите пункт «Отправить», затем «Сжатая ZIP-папка» как показано на рисунке:
После этого в текущей папке появится ZIP-архив (например, 032912-19827-01.zip), который необходимо прикрепить к завке в службу техподдержки.
Часть вторая — анализ мини-дампа
Данная часть статьи предназначена для тех энтузиастов, которые предпочитают метод самостоятельной диагностики проблем с системой. Также приведенный метод может быть использован сотрудниками технической поддержки разнообразных сервисных служб для помощи рядовым пользователям ПК.
Ниже описан метод расшифровки файла мини-дампа с использованием специальных программных средств.
Для этого нам понадобится установить Debugging Tools for Windows и скачать утилиту непосредственно для расшифровки файла дампа
kdfe.zip (зеркало 1, зеркало 2)
Когда установили Debugging Tools, копируем kdfe.cmd в корень диска C:\
Запускаем командную строку «Пуск» -«Выполнить», вписываем команду cmd
При таком размещении файла дампа, надо запустить «Командную строку» обязательно от имени администратора:
Теперь в черном окне CMD пишем следующее:
c:\kdfe.cmd c:\Windows\Minidump\010113-19531-01.dmp
где c:\Windows\Minidump\010113-19531-01.dmp — файл мини-дампа.
Результат декодирования ошибки выглядит так:
Crash date: Tue Jan 1 15:35:49.182 2013 (GMT+4)
— дата события
Stop error code: 0xD1
— код ошибки останова системы
Process name: avp.exe
— имя процесса вызвавшего остановку системы
Probably caused by: L1E62x64.sys ( L1E62x64+76b8 )
— вероятный виновник остановки
Чтобы окончательно локализовать источники проблем, следуем такому комиксу:
Ищем найденный в дампе файл драйвера на системном диске:
Открываем свойства файла драйвера:
На вкладке «Подробно» в поле «Описание» и «Название продукта» видим то, что нам надо:
В меню Пуск-Мой компьютер, открываем элемент «Управление» и далее «Диспетчер устройств»:
В диспетчере устройств находим адаптер из описания драйвера:
А в диспетчере задач находим нужный процесс:
Как видно, в моем случае сбой системы был вызван процессом avp.exe при взаимодействии с файлом драйвера сетевой карты L1E62x64.sys .
Теперь осталось лишь избавиться от любого из виновников сбоя.
p.s.
Использованные источники:
1. Самопроизвольная перезагрузка и/или появляется ошибка на синем экране (BSOD)
2. Смотрим Minidump после падения системы.
p.p.s
Думаю также вам будет интересно узнать об утилите bluescreenview, которая также позволяет изучать содержимое файлов мини-дампа.
Удачи!
Запись опубликована в рубрике ЭВТ ИТ с метками blue, bsod, cmd, crash, decode, dump, error, minidump, read, screen, system, view, windows, синий, экран. Добавьте в закладки постоянную ссылку.
Источник: http://blog.apikulin.ru/2013/01/windows-bsod.html