В ОС Windows очень часто случаются ошибки, даже в случае с «чистой» системой. Если обычные ошибки программ решить можно (появляется сообщение о недостающем компоненте), то исправить критические ошибки будет намного сложнее.
Для решения проблем с системой обычно используют аварийный дамп памяти – это снимок части или полного объема оперативной памяти и помещение его на энергонезависимый носитель (жёсткий диск). Другими словами, содержимое оперативной памяти полностью или частично копируется на носитель, и пользователь может провести анализ дампа памяти.
Существует несколько видов дампов памяти:
Малый дамп (Small Memory Dump) – сохраняет минимальный объем ОЗУ, где находятся сведения по критическим ошибкам (BSoD) и компонентах, которые были загружены во время работы системы, например, драйвера, программы. MiniDump хранится по пути C:WindowsMinidump.
Полный дамп (Complete Memory Dump) – сохраняется полный объем ОЗУ. Это значит, что размер файла будет равен объему оперативной памяти. Если места на диске мало, будет проблематично сохранить, например, 32 Гб. Также бывают проблемы с созданием файла дампа памяти более 4 Гб. Данный вид используется очень редко. Храниться по пути C:WindowsMEMORY.DMP.
Дамп памяти ядра – сохраняется только информация, относящаяся к ядру системы.
Когда пользователь дойдет до анализа ошибки, ему достаточно использовать только minidamp (малый дамп). Но перед этим он обязательно должен быть включен, иначе распознать проблему не удастся. Также для более эффективного выявления аварии использование полного снимка памяти предпочтительней.
Информация в реестре
Если заглянуть в реестр Windows, то можно обнаружить некоторые полезные параметры снимков. Щелкаем сочетание клавиш Win+R, вводим команду regedit и открываем следующие ветки:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl
В данной ветке пользователь обнаружит следующие параметры:
- AutoReboot – активация или отключение перезагрузки после создания синего экрана смерти (BSoD).
- DumpFile – название видов дампов и расположение.
- CrashDumpEnabled – номер создаваемого файла, например, число 0 – дамп не создается; 1 – создание полного дампа; 2 – создание дампа ядра; 3 – создание малого дампа.
- DumpFilters – параметр позволяет добавить новые функции перед созданием снимка. Например, шифрование файла.
- MinidumpDir – название малого дампа и его расположение.
- LogEvent – активация записи сведений в системный журнал.
- MinidumpsCount – задать количество создаваемых малых дампов. (Превышение этого количества будет уничтожать старые файлы и заменять их).
- Overwrite – функция для полного дампа или системного. При создании нового снимка, предыдущий будет всегда заменяться на новый.
- DedicatedDumpFile – создание альтернативного файла снимка и указание его пути.
- IgnorePagefileSize – используется для временного расположения снимка, без использования файла подкачки.
Как это работает
При возникновении сбоя, система полностью останавливает свою работу и, если создание дампов активно, в файл, помещаемый на диск будет записана информация о возникшей проблеме. Если что-то случилось с физическими компонентами, то будет работать аварийный код, а железо, которое дало сбой будет вносить какие-либо изменения, что обязательно отразится в снимке.
Обычно файл сохраняется в выделенном для файла подкачки блоке жёсткого диска, после появления BSoD файл перезаписывается в тот вид, который пользователь сам и настроил (Малый, полный или дамп ядра). Хотя, в современных ОС участие файла подкачки не обязательно.
Как включить дампы
В Windows 7:
- Запускаем Мой компьютер и в свободном месте нажимаем правой кнопочкой мышки, выбираем пункт «Свойства».
- В открывшемся окошке о системе слева переходим в раздел «Дополнительные параметры системы».
- На следующем этапе переходим на вкладку «Дополнительно» и щелкаем по третьей кнопке «Параметры» в области «Загрузка и восстановление».
- Настраиваем параметры по вашему желанию. Обязательно должен быть выбран какой-либо тип.
- Нажимаем ОК.
В Windows 8 и 10:
Здесь процесс немного похож, в сведения о системе можно попасть точно также, как в Windows 7. В «Десятке» обязательно открываем «Этот компьютер», нажимаем по свободному месту правой кнопочкой мышки и выбираем «Свойства». По-другому туда можно попасть через Панель управления.
Второй вариант для Windows 10:
- Щелкаем клавиши Win+I, открываются параметры ОС.
- Переходим в раздел «Система».
- Слева в самом низу выбираем подраздел «О системе».
- В правой части окна опускаемся в низ и щелкаем по ссылке «Сведения о системе».
- Слева выбираем «Дополнительные параметры системы».
- Во вкладке «Дополнительно» нажимаем третью кнопку «Параметры».
- Выбираем нужный файлик и жмём ОК.
Следует заметить, что в новых версиях Windows 10 появились новые пункты, которых не было в «семерке»:
- Малый дамп памяти 256 КБ – минимальные данные о сбое.
- Активный дамп – появился в десятой версии системы и сохраняет только активную память компьютера, ядра системы и пользователя. Рекомендуется использовать на серверах.
Как удалить дамп
Достаточно зайти в каталог, где хранятся снимки памяти и попросту удалить их. Но есть и другой способ удаления – использование утилиты очистки диска:
- Открываем с помощью комбинации клавиш Win+R окошко «Выполнить» и прописываем команду cleanmgr.
- Ищем кнопочку «Очистить системные файлы» и жмём по ней.
- Если есть пункт о файлах дампов памяти, выделяем и очищаем.
Если никаких пунктов обнаружено не было, возможно дампы не были включены.
Даже если вы когда-то включали их, некоторые используемые утилиты по оптимизации системы могут легко отключить некоторый функционал. Часто много чего отключается при использовании 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 и щелкаем опцию «Open Crash Dump». Расположение всех дампов указано в начале статьи.
После выбора закончится анализ и проблемный компонент автоматически будет выделен. Для получения большего количества информации в этом же окошке можно ввести такую команду: !analyze –v
Анализ с помощью BlueScreenView
Загрузить инструмент бесплатно можно с этого сайта — http://www.nirsoft.net/utils/blue_screen_view.html. Установка не требует каких-то навыков. Используется только в Windows 7 и выше.
Запускаем и настраиваем. Нажмите «Настройки» (Options) – «Дополнительные параметры» (Advanced Options). Выберите первый пункт «Загружать МиниДампы из этой папки» и указываем каталог — C:WINDOWSMinidump. Хотя можно просто нажать кнопку «По умолчанию». Нажимаем ОК.
В главном окне должны появится файлы дампа. Он может быть, как один, так и несколько. Для его открытия достаточно нажать по нему мышкой.
В нижней части окна будут отображены компоненты, которые были задействованы на момент сбоя. Красным цветом будет выделен виновник аварии.
Теперь нажимаем «Файл» и выбираем, например, пункт «Найти в Google код ошибки + драйвер». Если нашли нужный драйвер, установите и перезагрузите компьютер. Возможно ошибка исчезнет.
С критическими ошибками «оконной» ОС знаком практически каждый её пользователь, и появляющиеся при этом синие экраны смерти (BSoD) обычно ничего хорошего не предвещают. Они могут быть спровоцированы программными или аппаратными причинами, и поскольку источник неприятности не всегда очевиден, решение начинается с диагностических мероприятий.
Исправить ошибку бывает непросто, и часто самым полезным средством для диагностики причин возникшего сбоя становится дамп памяти, представляющий собой снимок состояния оперативной памяти операционки с отладочными сведениями. Причём в Windows не всегда активировано автоматическое создание и сохранение на жёсткий диск дампов памяти, тогда как в исправлении BSoD независимо от характера сбоя эти данные могут сильно помочь.
Для чего нужен дамп памяти Windows
Содержимое оперативной памяти и материалы, касающиеся сбоя, могут писаться в файл подкачки, при следующем старте операционки создаётся аварийный дамп с информацией об отладке, сформированной на базе сохранённых данных (ОС может создавать memory dump и минуя файл подкачки). В журнале событий будет сделана запись об ошибке, если данная опция настроена.
Вывод участка дампа 32-х битной ОС Windows с помощью программы Debug.exe
Тип записываемого дампа может задаваться в свойствах ОС, поддерживаются варианты:
- Малый дамп памяти. Включает немного сведений, в частности это код ошибки с параметрами, список установленных в Виндовс драйверов и т. д., но этой информации бывает достаточно для выявления источника проблемы. Элемент, как правило, будет записан в каталоге C:WindowsMinidump.
- Дамп памяти ядра. Выполняется сохранение сведений оперативной памяти, связанных только с режимом ядра, исключая информацию, не указывающую на источник появления сбоя.
- Полный дамп системы. Содержимым является вся память операционки, что может создать проблемы при создании снимка, если объём ОЗУ составляет более 4Гб. Обычно пишется в файл C:WindowsMEMORY.DMP.
- Автоматический дамп памяти (стал доступным с восьмой версии Виндовс). Содержит те же записи, что и memory dump ядра, при этом отличается способом управления системой размером файла подкачки.
- Активный дамп памяти (представлен в «Десятке»). Содержит только активную память хоста из режимов ядра и пользователя* (возможность была изначально реализована для серверов, чтобы при диагностике в дамп не попадали виртуальные машины).
*Дамп пользовательского режима представляет собой дамп определённого процесса. Так, содержимым может являться полная память процесса или фрагмент, список, стек, состояние потоков, списки библиотек, состояние потоков, дескрипторы объектов ядра.
Чаще всего аварийный дамп памяти Windows 7, 8, 10 используется в целях диагностики и позволяет выяснить, как исправить критическую ошибку. Проанализировав содержимое, можно понять, что стало причиной неполадки, и приступить к её устранению.
ВАЖНО. При отказе диска или возникновении BSoD на первой стадии запуска системы аварийный дамп создан не будет.
Как включить создание дампа памяти в Windows
Чтобы активировать автоматическое сохранение memory dump в Виндовс, нужно сделать следующее:
- Переходим к свойствам системы любым удобным способом. Например, жмём правой кнопкой мыши по значку «Мой компьютер» (или «Этот компьютер» на «Десятке»). Выбираем «Свойства», затем в перечне опций в левой колонке жмём «Дополнительные параметры системы». Альтернативный вариант – использование Панели управления, где следует перейти в раздел «Система» (то же окно появится при использовании клавиш Win+Pause), а затем в «Дополнительные параметры системы». В Виндовс 10 также можно применить оснастку «Параметры»(Win+I). В окне нужно перейти к разделу «Система – «О системе» – «Сведения о системе» и далее в дополнительные параметры ОС.
- В открывшемся окне на вкладке «Дополнительно» в области «Загрузка и восстановление» жмём «Параметры».
- В итоге манипуляций откроется следующее окно, где следует выбрать тип записи отладочной информации, задать параметры, проставив в нужных пунктах галочки, после чего нажать кнопку «ОК».
Как настроить дамп памяти в Windows
Настройки действий, производимых при аварийной остановке работы ОС, выполняются в том же окне, что и включение создания memory dump («Загрузка и восстановление»), куда мы попадаем из свойств системы.
Здесь можно настроить параметры запуска ОС и назначить определённые действия в случае её отказа, например:
- указать режим записи дампа со сведениями отладки (по умолчанию выбран автоматический, но может быть выставлено значение «Нет»);
- записать события в журнал (записи добавляются в логи);
- отмеченный пункт «Выполнить автоматическую перезагрузку» позволяет системе перезагрузиться после сбоя и продолжить функционировать;
- при выборе опции «Заменять существующий файл дампа», объект будет подвергаться перезаписи при каждой появляющейся ошибке.
При эксплуатации SSD лучше оставить тип записи «Автоматический дамп памяти», но если нужен файл аварийного дампа, лучше выставить «Малый дамп памяти», он самый лёгкий и его несложно переслать другому пользователю, если вам нужна помощь в анализе состояния.
Иногда может потребоваться увеличение размера файла подкачки больше, чем доступно в оперативке, чтобы он соответствовал полному дампу.
Прочитать memory dump можно посредством специализированных утилит, таких как Microsoft Kernel Debugger, BlueScreenView и других.
Установка WinDbg в Windows
Утилита, являющаяся отладчиком для юзермодных приложений и драйверов, позволяет проанализировать снимок памяти и выяснить, что спровоцировало BSoD. Поставляется она в составе пакета SDK для Windows 10, инсталлятор скачивается на сайте Microsoft. Для Семёрки и ранних версий систем WinDbg можно найти в пакете Microsoft Windows SDK for Windows 7 and NET Framework 4.
Устанавливаем WinDbg:
Анализ аварийного дампа памяти в WinDbg
Перед анализом memory dump необходимо выполнить некоторые настройки. Для работ с софтом понадобится пакет символов отладки Debugging Symbols, загруженный с учётом версии и разрядности системы.
Можно настроить извлечение утилитой символов из интернета, что безопасно, поскольку используется официальный ресурс компании Майкрософт.
Ассоциирование файлов .dmp с WinDbg
Для того чтобы объекты при нажатии на них открывались посредством утилиты:
- В консоли командной строки, запущенной от имени администратора (например, через меню Пуск) выполняем команды (зависимо от разрядности ОС):
cd C:Progran Files (x86)Windows Kits10Debuggersx64
exe –IA - Или (для 32-разрядной Виндовс):
cd C:Progran Files (x86)Windows Kits10Debuggersx86
exe –IA
Теперь файлы типов .DMP, .HDMP, .MDMP, .KDMP, .WEW будут ассоциироваться с приложением.
Настройка сервера отладочных символов
Отладочные символы, которые генерируются в процессе компиляции приложения вместе с исполняемым файлом, нужны при отладке. Настраиваем WinDbg на извлечение символов из сети:
- в окне WinDbg жмём «File» и выбираем «Symbol Fie Path…» или жмём Ctrl+S;
- указываем путь для загрузки, прописав строчку:
SRV*%systemroot%symbols*http://msdl.microsoft.com/download/symbols
- применяем корректировки нажатием «File» – «Save Workspace».
Анализ memory dump в WinDbg
Чтобы перейти к процедуре, открываем объект в утилите (File – Open Crash Dump) или, если предварительно настраивались ассоциации файлов, открываем элемент щелчком мыши. Утилита начнёт анализировать файл, затем выдаст результат.
В окне предполагается ввод команд. Запрос «!analyze –v» позволит получить более детальные сведения о сбое (STOP-код, имя ошибки, стек вызовов команд, приведших к проблеме и другие данные), а также рекомендации по исправлению. Для остановки отладчика в меню программы жмём «Debug» – «Stop Debugging».
Как удалить файлы дампа памяти
Если понадобилось удалить memory dump, это можно выполнить вручную, пройдя по пути месторасположения объекта на диске. Так, в системном каталоге Windows нужно найти и удалить файл MEMORY.DMP, а также элементы в каталоге Minidump. Кроме того, можно использовать штатный инструмент системы «Очистка диска»:
- вызываем консоль «Выполнить» (Win+R) и вводим команду «Cleanmgr», чтобы перейти к службе;
- жмём кнопку очищения системных файлов, затем находим и отмечаем в списке строчки, касающиеся memory dump. Если не нашлось, значит, их не создавали.
Создание снимков бывает отключено, даже если вы когда-либо активировали эту функцию по причине деятельности специального софта. Если речь о SSD-накопителе, это могут быть программы для работы с твердотельными дисками. Отключение некоторых опций ОС выполняется ими с целью оптимизации работы, поскольку многократные процессы чтения/записи сокращают продолжительность жизни диска. Также причиной отключения дампа памяти могут быть различные программы очистки компьютера и оптимизации системы.
Следуй этим шагам:
- Перезагрузите компьютер.
- Нажмите F8 до появления логотипа Windows 7.
- В меню «Дополнительные параметры загрузки» выберите «Восстановить компьютер».
- Нажмите Ввод.
- Теперь должны быть доступны параметры восстановления системы.
Как исправить дамп памяти?
Исправить ошибку дампа физической памяти
- Метод 1. Запустите диагностику Windows.
- Метод 2: запустите средство проверки системных файлов (SFC) и проверьте диск (CHKDSK)
- Метод 3: запустить Memtest86 +
- Метод 4: Запустите запуск / автоматическое восстановление.
- Метод 5: запустите CCleaner, чтобы исправить ошибки реестра.
- Метод 6: восстановление Установите Windows 10.
Что такое ошибка дампа памяти?
Дамп памяти — это процесс взятия всего информационного содержимого в ОЗУ и записи его на накопитель. … Некоторые компьютерные ошибки невозможно исправить, поскольку для восстановления работоспособности требуется перезагрузка, но информация, хранящаяся в ОЗУ во время сбоя, содержит код, вызвавший ошибку.
Как отключить дампы памяти?
У вас должна быть возможность отключить дамп памяти в системе и безопасности в разделе «Дополнительно». Ударь Ключ Windows и введите запуск и восстановление. Windows + X выберите систему, расширенный, запуск и восстановление, затем вы можете отключить дамп памяти. Выберите НЕТ.
Как восстановить Windows 7 без диска?
Восстановить без установочного CD / DVD
- Включи компьютер.
- Нажмите и удерживайте клавишу F8.
- На экране «Дополнительные параметры загрузки» выберите «Безопасный режим с командной строкой».
- Нажмите Ввод.
- Войдите в систему как администратор.
- Когда появится командная строка, введите эту команду: rstrui.exe.
- Нажмите Ввод.
Что делать, если Windows 7 не запускается?
Исправляет, если Windows Vista или 7 не запускается
- Вставьте оригинальный установочный диск Windows Vista или 7.
- Перезагрузите компьютер и нажмите любую клавишу, чтобы загрузиться с диска.
- Щелкните Восстановить компьютер. …
- Выберите свою операционную систему и нажмите «Далее», чтобы продолжить.
- В разделе «Параметры восстановления системы» выберите «Восстановление при загрузке».
Безопасно ли удалять файлы дампа?
Безопасно ли удалять файлы дампа памяти системной ошибки? Хорошо, удаление файлов не повлияет на нормальное использование вашего компьютера. Таким образом, безопасно удалять файлы дампа памяти системных ошибок. Удалив файлы дампа памяти системной ошибки, вы можете получить немного свободного места на системном диске.
Что вызывает дамп памяти?
BSOD могут быть вызваны проблемы с оборудованием, драйверами или программным обеспечением. Когда в Windows происходит фатальный сбой и отображается BSOD, она обычно сохраняет содержимое памяти компьютера в файл дампа системной памяти. Вы, технический специалист или поставщик программного обеспечения можете проанализировать файл, чтобы понять, что произошло.
Можно ли удалять файлы дампа?
Удалите дампы памяти, чтобы освободить место
Вы можете их удалить. dmp, чтобы освободить место, что является хорошей идеей, потому что они могут быть очень большими по размеру — если ваш компьютер имеет синий экран, у вас может быть файл MEMORY. … Файлы минидампа меньшего размера более полезны, потому что они содержат важную информацию о сбоях системы.
Как проверить дамп памяти?
Щелкните Пуск, а затем щелкните Панель управления. Дважды щелкните Система, а затем щелкните Дополнительные параметры системы. Щелкните вкладку «Дополнительно», а затем щелкните «Параметры» в разделе «Запуск и восстановление». В списке «Запись отладочной информации» выберите «Малый дамп памяти (64 КБ)».
Как исправить дамп памяти на синем экране?
Проверьте наличие проблем с жестким диском:
- Нажмите кнопку Пуск.
- Перейти к компьютеру.
- Щелкните правой кнопкой мыши основной диск, на котором установлена Windows 7, и выберите «Свойства».
- Перейдите на вкладку «Инструменты» и в разделе «Проверка ошибок» нажмите «Проверить сейчас».
- Выберите Автоматически исправлять ошибки файловой системы и Искать и пытаться восстановить поврежденные сектора.
- Нажмите кнопку Пуск.
Почему Windows 7 продолжает давать сбой?
Если с вашим жестким диском, картой памяти или системными файлами проблем нет, скорее всего, проблема заключается в сбое. вызвано вашими драйверами. Драйверы устройств являются неотъемлемой частью вашего компьютера. Поврежденные или отсутствующие драйверы обычно могут вызвать различные проблемы на вашем компьютере, включая сбой системы.
Где находятся файлы дампа?
Если у вас системный диск C :, то файл дампа будет расположен в C: Память Windows. DMP. Если вы ищете небольшие файлы дампа памяти, вы найдете их в C: WindowMinidump.
Что такое отключить автоматическое удаление дампов памяти?
Но если вы хотите отключить автоматическое удаление дампов памяти при нехватке места на диске, сделайте это, Откройте Свойства системы> вкладка Дополнительно> Параметры запуска и восстановления.. В разделе «Сбой системы» выберите «Отключить автоматическое удаление дампов памяти при нехватке места на диске», нажмите «ОК» и выйдите.
Что такое дамп памяти Windows?
Полный дамп памяти записывает все содержимое системной памяти, когда ваш компьютер неожиданно останавливается. Полный дамп памяти может содержать данные из процессов, которые выполнялись на момент сбора дампа памяти.
Данная небольшая заметка ставит целью своей показать, каким же образом можно сконфигурировать систему так, чтобы получить в своё распоряжение аварийный дамп памяти Windows. Дамп памяти Windows обычно представляет собой файл, который создается в случае возникновения либо критического системного сбоя (характеризующегося появлением синего экрана смерти (BSOD)), либо некритического системного сбоя (не препятствующего функционированию системы). Что же такое дамп вообще, для чего он нам требуется и что из себя представляет, какие проблемы он призван решить и какую информацию содержит в себе?
Дамп памяти (memory dump) — содержимое рабочей памяти процесса, ядра или всей операционной системы, включающий, помимо рабочих областей, дополнительную информацию о состоянии регистров процессора, содержимом стека и прочие служебные структуры.
Для чего нам может потребоваться данное содержимое, то есть дамп памяти Windows? Дамп памяти используется для последующего изучения причин возникновения критического (BSOD, являющегося причиной полного останова) системного сбоя, либо некритического (позволяющего системе нормально функционировать). В дополнение к этому, состояние памяти может использоваться и для других целей (например: изучение внутренних структур ядра в моменте). Немаловажен и тот факт, что дамп памяти — это буквально единственный способ получения информации о любом виде сбоя! А снятие (получение) дампа памяти системы — это, фактически, единственный точный метод получения мгновенного отпечатка (копии) содержимого физической памяти системы.
Чем точнее содержимое дампа будет отражать состояние памяти в момент сбоя, тем подробнее мы сможем проанализировать аварийную ситуацию. Поэтому крайне важно получить именно актуальную копию физической памяти системы в строго определенный момент времени, непосредственно предшествующий сбою. А единственный способ сделать это — создать полный аварийный дамп памяти. Причина достаточно тривиальна — когда происходит создание аварийного дампа памяти системы, в результате ли сбоя, либо в следствии искусственно смоделированной ситуации, система в этот момент получения управления аварийными функциями (KeBugCheckEx
) пребывает в абсолютно неизменном (статичном) состоянии, поэтому между моментом возникновения сбоя и моментом окончания записи данных на носитель ничто не изменяет содержимое физической памяти, и она в оригинальном состоянии записывается на диск. Ну это в теории, а в жизни изредка, но встречаются ситуации, что по причине неисправных аппаратных компонентов, сам дамп памяти может быть поврежден, или в процессе записи дампа станция может подвиснуть так, что сам процесс записи становится невозможным.
В подавляющем большинстве случаев, с момента начала процесса создания аварийного дампа памяти, и до момента завершения записи содержимого памяти на диск, информация в памяти остается неизменной.
Теоретически, статичность (неизменность) «отпечатка» памяти объясняется тем, что когда вызывается функция KeBugCheckEx
, выводящая на экран информацию о сбое и стартующая процесс создания дампа памяти, система уже полностью остановлена и содержимое физической памяти записано в блоки, занимаемые на диске файлом подкачки, после чего, уже в процессе последующей загрузки операционной системы оно сбрасывается в файл на системном носителе.
На практике как-то раз наблюдал ситуацию, когда «сбоящая» материнская плата не давала сохранить дамп памяти:
- «наглухо» подвисая в процессе работы логики сохранения дампа (процесс не доходил до 100%);
- повреждая файл дампа памяти (впоследствии отладчик ругался на структуры);
- записывая файлы дампов (memory.dmp) нулевой длины;
Поэтому, не смотря на то, что система в момент создания дампа памяти уже полностью остановлена, и работает только аварийный код, сбойное железо может вносить свои коррективы в любую без исключения логику на любом этапе функционирования.
Традиционно, на начальном этапе для сохранения дампа памяти Windows используются блоки диска, выделенные файлу подкачки (pagefile). Затем, после возникновения синего экрана и перезагрузки, данные перемещаются в отдельный файл, а затем файл переименовывается по шаблону, зависящему от типа дампа. Однако, начиная с версии Windows Vista, подобное положение вещей возможно изменить, теперь пользователю дана возможность сохранять выделенный дамп без участия файла подкачки, помещая информацию о сбое во временный файл. Сделано это для того, чтобы исключить ошибки конфигурации, связанные с неправильной настройкой размера и положения файла подкачки, что зачастую приводило к проблемам в процессе сохранения дампа памяти.
Давайте посмотрим, какие же разновидности дампов позволяет нам создавать операционная система Windows:
- Дамп памяти процесса (приложения);
- Дамп памяти ядра;
- Полный дамп памяти (дамп доступной части физической памяти системы).
Все аварийные дампы можно разделить на две основных категории:
- Аварийные дампы с информацией о возникшем исключении (crash dump). Обычно создаются отладчиком в автоматическом режиме, когда в приложении/ядре возникает [интересующее нас] исключение, в итоге становящееся необрабатываемым (unhandled exception). В этом случае информация об исключении записывается в дамп, что упрощает определение типа исключения и места возникновения при последующем анализе отладчиком в автоматическом/ручном режимах.
- Аварийные дампы без информации об исключении (hang dump). Обычно создаются пользователем в ручную, когда необходимо создать просто «мгновенный снимок» процесса после наступления какого-либо события (подвис, начал грузить ЦП), для последующего анализа. Анализ этот подразумевает не определение причины исключения (поскольку никакого исключения и не возникало), а анализ совершенно другого рода, например изучение структур данных процесса и прочее.
Конфигурация дампа памяти ядра
Вы должны быть залогинены под административной учетной записью для выполнения действий, описываемых в данном разделе.
Давайте непосредственно перейдем к конфигурированию параметров аварийного дампа памяти Windows. Для начала, нам необходимо зайти в окно свойств системы одним и приведенных способов:
- Нажать правой кнопкой мыши на значке «Мой Компьютер» — «Свойства» — «Дополнительные параметры системы» — «Дополнительно».
- Кнопка «Пуск» — «Панель управления» — «Система» — «Дополнительные параметры системы» — «Дополнительно».
- Сочетание клавиш «Windows» + «Pause» — «Дополнительные параметры системы» — «Дополнительно».
- Выполнить в командной строке (cmd):
control system.cpl,,3 - Выполнить в командной строке (cmd):
SystemPropertiesAdvanced
Результатом описанных действий является открытие окна «Свойства системы» и выбор вкладки «Дополнительно»:
После этого в разделе «Загрузка и восстановление» мы нажимаем выбираем «Параметры» и тем самым открываем новое окно под названием «Загрузка и восстановление»:
Все параметры аварийного дампа сгруппированы в блоке параметров под названием «Отказ системы». В этом блоке мы можем задать следующие параметры:
- Записать события в системный журнал.
- Выполнить автоматическую перезагрузку.
- Запись отладочной информации.
- Файл дампа.
- Заменять существующий файл дампа.
Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре «Файл дампа». Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:
Малый дамп памяти (Small memory dump)
Малый дамп памяти (минидамп, minidump) — это файл, который содержит наименьший объем информации о сбое. Самый маленький из всех возможных дампов памяти. Не смотря на очевидные минусы, зачастую именно минидампы используются в качестве информации о сбое для передачи поставщику сторонних драйверов с целью последующего изучения.
Состав:
- Сообщение об ошибке.
- Значение ошибки.
- Параметры ошибки.
- Блок контекста процессора (
PRCB
), на котором произошел сбой. - Сведения о процессе и контекст ядра (
EPROCESS
) для процесса, являющего причиной сбоя, со всеми его потоками. - Сведения о процессе и контекст ядра (
ETHREAD
) для потока, являющегося причиной сбоя. - Стек режима ядра для потока, который явился причиной сбоя.
- Список загруженных драйверов.
Размещение: %SystemRoot%MinidumpMMDDYY-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, в систему введен новый тип дампа под названием «Автоматический дамп памяти», который устанавливается типом по умолчанию. В этом случае система сама решает, какой дамп памяти записать в ситуации того или иного сбоя. Причем логика выбора зависит от многих критериев, в том числе от частоты «падения» операционной системы.
«Живой» дамп ядра (Kernel live dump)
Отличительная особенность данного вида дампа это возможность собрать данные о сбое (с целью изучения/устранения причин нештатной ситуации), при этом позволив ОС продолжить работу [без останова]. Иными словами, «живые» дампы не останавливают работу ОС (что приводит к потере данных), но позволяют собрать состояние памяти системы в то время как система продолжает штатное функционирование. Это существенно сокращает время простоя в сравнении с полноценным bugcheck для нефатальных, но сильно влияющих на быстродействие сбоев и зависаний. Чтобы свести к минимуму влияние на производительность, используются специальные алгоритмы копирования памяти, которые позволяют создавать дампы в короткий промежуток времени. «Живой» дамп ядра эффективен для категории проблем, когда какие-то операции начинают тормозить (занимать много времени), при этом технически ничего не выходит из строя. Таймер WATCHDOG может быть инициализирован при запуске операции и если срок действия таймера истекает до завершения [какой-либо] операции (операция занимает более ожидаемого времени), то может быть создан оперативный дамп системы. Затем созданный дамп может быть проанализирован путем обхода стека вызовов и связанной цепочки ожидания [данной операции] с целью выяснения причины столько долгого выполнения.
Состав:
- Блок
KdDebuggerBlock
; - Список загруженных модулей ядра (библиотек);
KiProcessorBlock
;- Блоки контекста процессора
PRCB
; - Текущий стек [вызовов];
- Текущую таблицу каталога страниц (
PDT
); KI_USER_SHARED_DATA
;- NTOS Kernel Image;
- HAL Image;
- Thread / memory state;
- In-memory logging;
- Могут содержать страницы процессов пользовательского режима ядра;
- Могут содержать дополнительную информацию (например: специфические данные USB для сбоев USB);
Размещение: полные «живые» дампы: %SystemRoot%LiveKernelReports*.dmp, «живые» минидампы: %SystemRoot%LiveKernelReports<ИмяКомпонента>*.dmp
После изменения конфигурации дампа памяти Windows, может потребоваться перезагрузка компьютера.
Параметры реестра
Раздел реестра, который определяет параметры аварийного дампа:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl
Параметры:
Параметр | Тип | Описание |
---|---|---|
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 файлы, по одному файлу на каждый из режимов записи:
Скачать: Малый дамп памяти
Скачать: Дамп памяти ядра
Скачать: Полный дамп памяти
Общие сведения об аварийном дампе памяти
Все Windows-системы при обнаружении фатальной ошибки делают аварийный дамп (снимок) содержимого оперативной памяти и сохраняет его на жесткий диск. Существуют три типа дампа памяти:
Полный дамп памяти – сохраняет все содержимое оперативной памяти. Размер снимка равен размеру оперативной памяти + 1 Мб (заголовок). Используется очень редко, так как в системах с большим объемом памяти размер дампа будет слишком большим.
Дамп памяти ядра – сохраняет информацию оперативной памяти, касающуюся только режима ядра. Информация пользовательского режима не сохраняется, так как не несет в себе информации о причине краха системы. Объем файла дампа зависит от размера оперативной памяти и варьируется от 50 Мб (для систем с 128 Мб оперативной памяти) до 800 Мб (для систем с 8 Гб оперативной памяти).
Малый дамп памяти (мини дамп) – содержит довольно небольшое количество информации: код ошибки с параметрами, список драйверов загруженных в оперативную память на момент краха системы и т.д., но этих сведений достаточно, для определения сбойного драйвера. Еще одним преимуществом данного вида дампа является маленький размер файла.
Настройка системы
Для выявления драйвера вызвавшего синий экран нам достаточно будет использовать малый дамп памяти. Для того чтобы система при крахе сохраняла мини дамп необходимо выполнить следующие действия:
Для Windows Xp | Для Windows 7 |
|
|
Проделав все манипуляции, после каждого BSoD в папке C:WINDOWSMinidump будет сохраняться файл с расширение .dmp. Советую ознакомиться с материалом «Как создать папку«. Также можно установить галочку на “Заменить существующий файл дампа”. В этом случае каждый новый аварийный дамп будет записываться поверх старого. Я не советую включать данную опцию.
Анализ аварийного дампа памяти с помощью программы BlueScreenView
Итак, после появления синего экрана смерти система сохранила новый аварийный дамп памяти. Для анализа дампа рекомендую использовать программу BlueScreenView. Её можно бесплатно скачать тут. Программа довольно удобная и имеет интуитивный интерфейс. После её установки первое, что необходимо сделать – это указать место хранение дампов памяти в системе. Для этого необходимо зайти в пункт меню “Options” и выбрать “Advanced Options”. Выбираем радиокнопку “Load from the following Mini Dump folder” и указываем папку, в которой хранятся дампы. Если файлы хранятся в папке C:WINDOWSMinidump можно нажатием кнопки “Default”. Нажимаем OK и попадаем в интерфейс программы.
Программа состоит из трех основных блоков:
- Блок главного меню и панель управления;
- Блок списка аварийных дампов памяти;
- В зависимости от выбранных параметров может содержать в себе:
- список всех драйверов находящихся в оперативной памяти до появления синего экрана (по умолчанию);
- список драйверов находящихся в стеке оперативной памяти;
- скриншот BSoD;
- и другие значения, которые мы использовать не будем.
В блоке списка дамп памяти (на рисунке помечен цифрой 2) выбираем интересующий нас дамп и смотрим на список драйверов, которые были загружены в оперативную память (на рисунке помечен цифрой 3). Розовым цветом окрашены драйвера, которые находились в стеке памяти. Они то и являются причиной появления BSoD. Далее переходите в Главное меню драйвера, определяйте к какому устройству или программе они принадлежат. В первую очередь обращайте внимание на не системные файлы, ведь системные файлы в любом случае загружены в оперативной памяти. Легко понять, что на изображении сбойным драйвером является myfault.sys. Скажу, что это программа была специально запущена для вызова Stop ошибки. После определения сбойного драйвера, необходимо его либо обновить, либо удалить из системы.
Для того чтобы программа показывала список драйверов находящихся в стеке памяти во время возникновения BSoD необходимо зайти в пункт меню “Options” кликаем на меню “LowerPaneMode” и выбираем “OnlyDriversFoundInStack” (или нажмите клавишу F7), а для показа скриншота ошибки выбираем “BlueScreeninXPStyle” (F8). Что бы вернуться к списку всех драйверов, необходимо выбрать пункт “AllDrivers” (F6).
Reader Interactions
В момент критического сбоя операционная система Windows прерывает работу и показывает синий экран смерти (BSOD). Содержимое оперативной памяти и вся информация о возникшей ошибке записывается в файл подкачки. При следующей загрузке Windows создается аварийный дамп c отладочной информацией на основе сохраненных данных. В системном журнале событий создается запись о критической ошибке.
Внимание! Аварийный дамп не создается, если отказала дисковая подсистема или критическая ошибка возникла на начальной стадии загрузки Windows.
Содержание:
- Типы аварийных дампов памяти Windows
- Как включить создание дампа памяти в Windows?
- Установка WinDBG в Windows
- Настройка ассоциации .dmp файлов с WinDBG
- Настройка сервера отладочных символов в WinDBG
- Анализ аварийного дампа памяти в WinDBG
Типы аварийных дампов памяти Windows
На примере актуальной операционной системы Windows 10 (Windows Server 2016) рассмотрим основные типы дампов памяти, которые может создавать система:
- Мини дамп памяти (Small memory dump) (256 КБ). Этот тип файла включает минимальный объем информации. Он содержит только сообщение об ошибке BSOD, информацию о драйверах, процессах, которые были активны в момент сбоя, а также какой процесс или поток ядра вызвал сбой.
- Дамп памяти ядра (Kernel memory dump). Как правило, небольшой по размеру — одна треть объема физической памяти. Дамп памяти ядра является более подробным, чем мини дамп. Он содержит информацию о драйверах и программах в режиме ядра, включает память, выделенную ядру Windows и аппаратному уровню абстракции (HAL), а также память, выделенную драйверам и другим программам в режиме ядра.
- Полный дамп памяти (Complete memory dump). Самый большой по объему и требует памяти, равной оперативной памяти вашей системы плюс 1MB, необходимый Windows для создания этого файла.
- Автоматический дамп памяти (Automatic memory dump). Соответствует дампу памяти ядра с точки зрения информации. Отличается только тем, сколько места он использует для создания файла дампа. Этот тип файлов не существовал в Windows 7. Он был добавлен в Windows 8.
- Активный дамп памяти (Active memory dump). Этот тип отсеивает элементы, которые не могут определить причину сбоя системы. Это было добавлено в Windows 10 и особенно полезно, если вы используете виртуальную машину, или если ваша система является хостом Hyper-V.
Как включить создание дампа памяти в Windows?
С помощью Win+Pause откройте окно с параметрами системы, выберите «Дополнительные параметры системы» (Advanced system settings). Во вкладке «Дополнительно» (Advanced), раздел «Загрузка и восстановление» (Startup and Recovery) нажмите кнопку «Параметры» (Settings). В открывшемся окне настройте действия при отказе системы. Поставьте галку в чек-боксе «Записать события в системный журнал» (Write an event to the system log), выберите тип дампа, который должен создаваться при сбое системы. Если в чек-боксе «Заменять существующий файл дампа» (Overwrite any existing file) поставить галку, то файл будет перезаписываться при каждом сбое. Лучше эту галку снять, тогда у вас будет больше информации для анализа. Отключите также автоматическую перезагрузку системы (Automatically restart).
В большинстве случаев для анализа причины BSOD вам будет достаточно малого дампа памяти.
Теперь при возникновении BSOD вы сможете проанализировать файл дампа и найти причину сбоев. Мини дамп по умолчанию сохраняется в папке %systemroot%minidump. Для анализа файла дампа рекомендую воспользоваться программой WinDBG (Microsoft Kernel Debugger).
Установка WinDBG в Windows
Утилита WinDBG входит в «Пакет SDK для Windows 10» (Windows 10 SDK). Скачать можно здесь.
Файл называется winsdksetup.exe, размер 1,3 МБ.
WinDBG для Windows7 и более ранних систем включен в состав пакета «Microsoft Windows SDK for Windows 7 and .NET Framework 4». Скачать можно здесь.
Запустите установку и выберите, что именно нужно сделать – установить пакет на этот компьютер или загрузить для установки на другие компьютеры. Установим пакет на локальный компьютер.
Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows.
После установки ярлыки WinDBG можно найти в стартовом меню.
Настройка ассоциации .dmp файлов с WinDBG
Для того, чтобы открывать файлы дампов простым кликом, сопоставьте расширение .dmp с утилитой WinDBG.
- Откройте командную строку от имени администратора и выполните команды для 64-разрядной системы:
cd C:Program Files (x86)Windows Kits10Debuggersx64
windbg.exe –IA
для 32-разрядной системы:
C:Program Files (x86)Windows Kits10Debuggersx86
windbg.exe –IA - В результате типы файлов: .DMP, .HDMP, .MDMP, .KDMP, .WEW – будут сопоставлены с WinDBG.
Настройка сервера отладочных символов в WinDBG
Отладочные символы (debug-символы или symbol files) – это блоки данных, генерируемые в процессе компиляции программы совместно с исполняемым файлом. В таких блоках данных содержится информация о именах переменных, вызываемых функциях, библиотеках и т.д. Эти данные не нужны при выполнении программы, но полезные при ее отладке. Компоненты Microsoft компилируются с символами, распространяемыми через Microsoft Symbol Server.
Настройте WinDBG на использование Microsoft Symbol Server:
- Откройте WinDBG;
- Перейдите в меню File –> Symbol File Path;
- Пропишите строку, содержащую URL для загрузки символов отладки с сайта Microsoft и папку для сохранения кэша:
SRV*E:Sym_WinDBG*http://msdl.microsoft.com/download/symbols
В примере кэш загружается в папку E:Sym_WinDBG, можете указать любую. - Не забывайте сохранить изменения в меню File –> Save WorkSpace;
WinDBG произведет поиск символов в локальной папке и, если не обнаружит в ней необходимых символов, то самостоятельно загрузит символы с указанного сайта. Если вы хотите добавить собственную папку с символами, то можно сделать это так:
SRV*E:Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:Symbols
Если подключение к интернету отсутствует, то загрузите предварительно пакет символов с ресурса Windows Symbol Packages.
Анализ аварийного дампа памяти в WinDBG
Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.
Команды вводятся в командную строку, расположенную внизу окна.
Самое главное, на что нужно обратить внимание – это код ошибки, который всегда указывается в шестнадцатеричном значении и имеет вид 0xXXXXXXXX (указываются в одном из вариантов — STOP: 0x0000007B, 02.07.2019 0008F, 0x8F). В нашем примере код ошибки 0х139.
Полный справочник ошибок можно посмотреть здесь.
Отладчик предлагает выполнить команду !analyze -v, достаточно навести указатель мыши на ссылку и кликнуть. Для чего нужна эта команда?
- Она выполняет предварительный анализ дампа памяти и предоставляет подробную информацию для начала анализа.
- Эта команда отобразит STOP-код и символическое имя ошибки.
- Она показывает стек вызовов команд, которые привели к аварийному завершению.
- Кроме того, здесь отображаются неисправности IP-адреса, процессов и регистров.
- Команда может предоставить готовые рекомендации по решению проблемы.
Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды !analyze –v (листинг неполный).
1: kd>
!analyze -v
*****************************************************************************
* *
* Bugcheck Analysis *
* *
*****************************************************************************
Символическое имя STOP-ошибки (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Описание ошибки (Компонент ядра повредил критическую структуру данных. Это повреждение потенциально может позволить злоумышленнику получить контроль над этой машиной):
A kernel component has corrupted a critical data structure. The corruption could potentially allow a malicious user to gain control of this machine.
Аргументы ошибки:
Arguments:
Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).
Arg2: ffffd0003a20d5d0, Address of the trap frame for the exception that caused the bugcheck
Arg3: ffffd0003a20d528, Address of the exception record for the exception that caused the bugcheck
Arg4: 0000000000000000, Reserved
Debugging Details:
------------------
Счетчик показывает сколько раз система упала с аналогичной ошибкой:
CUSTOMER_CRASH_COUNT: 1
Основная категория текущего сбоя:
DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY
Код STOP-ошибки в сокращенном формате:
BUGCHECK_STR: 0x139
Процесс, во время исполнения которого произошел сбой (не обязательно причина ошибки, просто в момент сбоя в памяти выполнялся этот процесс):
PROCESS_NAME: sqlservr.exe
CURRENT_IRQL: 2
Расшифровка кода ошибки: В этом приложении система обнаружила переполнение буфера стека, что может позволить злоумышленнику получить контроль над этим приложением.
ERROR_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
Последний вызов в стеке:
LAST_CONTROL_TRANSFER: from fffff8040117d6a9 to fffff8040116b0a0
Стек вызовов в момент сбоя:
STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9 : 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528 : nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50 : ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2 : nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482 : ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9 : nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d : 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 : nt! ?? ::FNODOBFM::`string'+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac : 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600 : nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`0117d313 : ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380 : nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : nt!KiSystemServiceCopyEnd+0x13
000000ee`f25ed2b8 00000000`00000000 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : 0x00007ffb`475307da
Участок кода, где возникла ошибка:
FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr [rsp+20h],0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: MachineOwner
Имя модуля в таблице объектов ядра. Если анализатору удалось обнаружить проблемный драйвер, имя отображается в полях MODULE_NAME и IMAGE_NAME:
MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe
Если кликнете по ссылке модуля (nt), то увидите подробную информацию о пути и других свойствах модуля. Находите указанный файл, и изучаете его свойства.
1: kd>
lmvm nt
Browse full module list
Loaded symbol image file: ntkrnlmp.exe
Mapped memory image file: C:ProgramDatadbgsymntoskrnl.exe5A9A2147787000ntoskrnl.exe
Image path: ntkrnlmp.exe
Image name: ntkrnlmp.exe
InternalName: ntkrnlmp.exe
OriginalFilename: ntkrnlmp.exe
ProductVersion: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)
В приведенном примере анализ указал на файл ядра ntkrnlmp.exe. Когда анализ дампа памяти указывает на системный драйвер (например, win32k.sys) или файл ядра (как в нашем примере ntkrnlmp.exe), вероятнее всего данный файл не является причиной проблемы. Очень часто оказывается, что проблема кроется в драйвере устройства, настройках BIOS или в неисправности оборудования.
Если вы увидели, что BSOD возник из-за стороннего драйвера, его имя будет указано в значениях MODULE_NAME и IMAGE_NAME.
Например:
Image path: SystemRootsystem32driverscmudaxp.sys
Image name: cmudaxp.sys
Откройте свойсва файла драйвера и проверьте его версию. В большинстве случаев проблема с драйверами решается их обнвовлением.
Отметка «Аварийный дамп памяти», которую можно увидеть в системном приложении «Управление дисками», не является следствием каких-то проблем логическим разделом («Локальным диском»), и уж там более — следствием неполадок в работе самого твердотельного накопителя. По всей видимости, в пользователей вселяет беспокойство слово «аварийный», предшествующее непотному словосочетанию «дамп памяти». Давайте во всем разбираться.
1
Что такое «Аварийный дамп памяти»?
Спешим заверить, что понятие «Аварийный дамп памяти» не относится к SSD-диску или любому другому типу устройству хранения данных, т.е. оно не означает, как может показаться, что накопитель пребывает в аварийном состоянии. Если простыми словами, то это всего лишь название для файла, автоматически создающегося при возникновении критических ошибок в работе операционной системы. А тот локальный диск (раздел), где впоследствии хранится этот файл, отмечается в программе «Управление дисками» соответствующей пометкой. По умолчанию, для этих целей задействуется системный раздел, куда установлена операционная система. При необходимости местоположение можно изменить.
Наверняка, абсолютно все пользователи Windows слышали о «Синем экране смерти» BSoD (Blue Screen of Dead), который может «обрадовать» своим появлением на любой стадии работы ОС. Это и есть критические ошибки системы. Так вот, при возникновении BSoD (но вполне возможно, не только при BSoD) операционная система создает один крупный файл «MEMORY.DMP» и/или несколько мелких файлов, содержащих самую различную отладочную информацию о компьютере, в т.ч. данные, что пребывали на момент возникновения ошибки в оперативной памяти. Эта информация помогает специалистам выявить причину неполадок, приведших к появлению этого самого «Синего экрана смерти». Сгенерированные системой данные именуются «дампом». А «аварийный» этот дамп по той причине, что создается он в случае возникновения аварий в работе Windows.
Вредит ли «Аварийный дамп памяти» SSD-диску?
Ничем, кроме как уменьшением объема свободного дискового пространства, «Аварийный дамп памяти» не вредит твердотельному накопителю. Но с другой стороны, это мусор (по крайней мере, для простых пользователей), забивающий память SSD-диска. А, как известно, твердотельные накопители «не приветствуют» хранение бесполезных для рядового пользователя файлов, т.к. это сказывается на ресурсе ячеек памяти.
Потому многие пользователи просто отключают функцию создания «Аварийного дампа памяти» в настройках системы, и перестают беспокоиться о лишнем мусоре на SSD-диске. Отвечая на очевидный вопрос о безопасности подобного мероприятия, скажем, что это безопасно. А вот целесообразно ли это — зависит от конкретной ситуации. Если ошибки BSoD возникают довольно часто, причем, даже после переустановки системы, то функцию создания «Аварийного дампа памяти» лучше оставить в активном состоянии, чтобы облегчить специалистам задачу по устранению причин их возникновения.
Можно ли удалить файлы дампа памяти?
Можно. Если, конечно, они точно не понадобятся в устранении неполадок в работе системы. А вообще, они удаляются системой автоматически, если объем свободного дискового пространства сократиться до какого-то определенного значения (точно не скажем, но вроде как — 25 Гб). Чтобы удалить файлы дампа в Windows 10 и 11 вручную, нужно сделать следующее:
- Откройте окно «Параметры» комбинацией клавиш «Win + I», перейдите в нем во вкладку «Система», затем — в раздел «Память»:
- Далее перейдите в подраздел «Временные файлы»:
- Дождитесь, пока система завершит сканирование диска на предмет наличия временных файлов. Затем снимите галочки со всех пунктов, кроме одного — «Файлы дампа памяти для системных ошибок». Впрочем, можно удалить и другой мусор. Останется нажать кнопку «Удалить файлы» в верхней части окна:
Удалить эти файлы можно вручную. В системной папке «C:Windows» хранится основной файл дампа памяти — «MEMORY.DMP», а в папке «C:WindowsMinidump» — малые дампы памяти размером около 1 Мб. Для удаления этих файлов потребуются права администратора компьютера.
Как отключить «Аварийный дамп памяти»?
Здесь все просто. Дальнейшая инструкция применима ко всем версиям ОС Windows, за исключением способа открытия нужного окна. В Windows 10 и 11 это делается следующим образом:
- Открываем окно «Параметры», переходим в нем во вкладку «Система», затем идем в подраздел «О системе»:
- В правой части окна напротив надписи «Ссылки по теме» кликаем по элементу «Защита системы»:
- Откроется окно «Свойства системы»: переходим в нем во вкладку «Дополнительно», затем в блоке «Загрузка и восстановление» нажимаем кнопку «Параметры»:
- В еще одном новом окне в блоке «Запись отладочной информации» устанавливаем вариант «(нет)».
- Если на компьютере, помимо SSD-накопителя, присутствуют и обычные жесткие диски, то файл дампа памяти можно будет хранить и на нем. Для этого достаточно вписать путь к локальному диску или любой папке в текстовое поле «Файл дампа»:
Вот, собственно, и все, что нужно знать об «Аварийном дампе памяти» и «отношении» к нему со стороны твердотельного накопителя.
Содержание
- Анализ креш-дампов памяти Windows
- Содержание:
- ↑ Как удалить дампы памяти
- ↑ Типы дампов
- ↑ Удаление дампов вручную
- ↑ Удаление дампов в приложении Параметры
- ↑ Удаление дампов в сторонних чистильщиках
- 990x.top
- Простой компьютерный блог для души)
- Debug Dump Files — что это такое и можно ли удалить?
- Debug Dump Files — что это такое?
- Debug Dump Files — можно ли удалить?
- Описание некоторых пунктов из очистки
- Microsoft Windows debugging symbols можно ли удалить?
- Debug Dump Files — что это такое и можно ли удалить?
- Debug Dump Files — можно ли удалить?
- Описание некоторых пунктов из очистки
- Debugging: Развертывание сервера отладочной информации
- 1. Подготовка окружения
- 2. Организация хранилища отладочной информации
- 3. Организация доступа к хранилищу отладочной информации через протокол http
- 4. Инсталляция прокси-фильтра для обновления символов через интернет
- 5. Настройка параметров прокси сервера для symproxy.dll
- 6. Настройка клиентских компьютеров на работу с сервером отладочной информации
- Резюме
- Заключение
- Debugging tools for windows использование. Windows Debugging Tools: диагностика и исправление BSOD. Добавление символов во время отладки
- Шаг 2 — Установка WinDBG
- Шаг 3 — Сопоставление файлов.dmp с WinDBG
- Шаг 4 — Настройка сервера символов для получения файлов символов отладки
- Типы аварийных дампов памяти Windows
- Как включить создание дампа памяти в Windows?
- Установка WinDBG в Windows
- Настройка ассоциации.dmp файлов с WinDBG
- Настройка сервера отладочных символов в WinDBG
- Анализ аварийного дампа памяти в WinDBG
- Microsoft Windows debugging symbols можно ли удалить?
- Анализ дампа памяти с помощью Microsoft Kernel Debuggers
- Анализ дампа памяти с помощью BlueScreenView
Анализ креш-дампов памяти Windows
Как часто Вам приходится лицезреть экран смерти Windows (BSoD)? BSoD может возникать в разных случаях: как уже при работе с системой, так и в процессе загрузки операционной системы. Как же определить, чем вызвано появление BSoD и устранить эту проблему? Операционная система Windows способна сохранять дамп памяти при появлении ошибки, чтобы системный администратор мог проанализировать данные дампа и найти причину возникновения BSoD.
Существует два вида дампов памяти — малый (minidump) и полный. В зависимости от настроек операционной системы, система может сохранять полный или малый дампы, либо не предпринимать никаких действий при возникновении ошибки.
Малый дамп располагается по пути %systemroot%minidump и имеет имя вроде Minixxxxxx-xx.dmp
Полный дамп располагается по пути %systemroot% и имеет имя вроде Memory.dmp
Для анализа содержимого дампов памяти следует применять специальную утилиту — Microsoft Kernel Debugger.
Получить программу и компоненты, необходимые для ее работы, можно напрямую с сайта Microsoft — Debugging Tools
При выборе отладчика следует учитывать версию операционной системы, на которой Вам придется анализировать дампы памяти. Для 32-разрядной ОС необходима 32-битовая версия отладчика, а для 64-разрядной ОС предпочтительно использовать 64-битовую версию отладчика.
Помимо самого пакета Debugging Tools for Windows, также понадобятся набор отладочных символов — Debugging Symbols. Набор отладочных символов специфичен для каждой ОС, на которой был зафиксирован BSoD. Потому придется загрузить набор символов для каждой ОС, анализировать работу которой Вам придется. Для 32-разрядной Windows XP потребуются набор символов для Windows XP 32-бит, для 64-разрядной ОС потребуются набор символов для Windows XP 64-бит. Для других ОС семейства Windows наборы символов подбираются сообразно такому же принципу. Загрузить отладочные символы можно отсюда. Устанавливать их рекомендуется по адресу %systemroot%symbols
После установки отладчика и отладочных символов, запускаем отладчик. Окно отладчика после запуска выглядит следующим образом.
Перед анализом содержимого дампа памяти, потребуется провести небольшую настройку отладчика. Конкретно — сообщить программе, по какому пути следует искать отладочные символы. Для этого выбираем в меню File > Symbol File Path… Нажимаем кнопку Browse… и указываем папку, в которую мы установили отладочные символы для рассматриваемого дампа памяти.
Можно запрашивать информацию о требуемых отладочных символах прямо через Интернет, с публичного сервера Microsoft. Таким образом у вас будет самая новая версия символов. Сделать это можно следующим образом — в меню File > Symbol File Path… вводим: SRV*%systemroot%symbols*http://msdl.microsoft.com/download/symbols
После указания пути к отладочным символам, выбираем в меню File > Save workspace и подтверждаем действие нажатием на кнопку OK.
Чтобы приступить к анализу дампа памяти, выбираем в меню File > Open Crash Dump… и выбираем требуемый для рассмотрения файл.
Система проведет анализ содержимого, по окончанию которого выдаст результат о предполагаемой причине ошибки.
Завершить отладку можно выбором пункта меню Debug > Stop Debugging
Таким образом, используя пакет Debugging Tools for Windows, всегда можно получить достаточно полное представление о причинах возникновения системных ошибок.
Источник
Содержание:
Каждый раз, когда Windows случается завершить свою работу сбоем с экраном BSOD, в системной папке %SystemRoot% создаётся отчёт — бинарный файл дампа памяти в формате DMP. Также файлы дампов могут создаваться сторонним программным обеспечением, например, популярным браузером Chrome. Дампы бывают весьма полезны в деле диагностики возникающих в работе системы и программ проблем, с другой стороны, они могут занимать на диске немало места, что не есть хорошо для небольших SSD-дисков.
↑ Как удалить дампы памяти
Поэтому поставленный вопрос вполне закономерен и естественен — можно ли удалять файлы дампов и если можно, то как это правильно делать? Ответ на этот вопрос — да, файлы дампов можно удалять, это никак не повредит системе и установленным на компьютере программам. Более того, вы вообще можете отключить создание дампов, по крайней мере тех, которые создаются операционной системой при критических сбоях.
↑ Типы дампов
Windows поддерживается несколько типов системных дампов: полный, памяти ядра и малый дамп памяти. Полный дамп содержит всю физическую память системы, дамп памяти ядра — только ту часть ОЗУ, которая используется ядром, малый дамп содержит сведения об ошибках, загруженных драйверах и прочую служебную информацию. «Большие» дампы сохраняются в каталоге %SystemRoot% (Windows), под хранение минидампов в системе отведена папка %SystemRoot%Minidump. Дампы сторонних программ обычно хранятся в папках профиля пользователя. Существуют также дампы отдельных процессов, создать такой дамп можно из Диспетчера задач или с помощью небезызвестной утилиты Process Explorer.
↑ Удаление дампов вручную
↑ Удаление дампов в приложении Параметры
В Windows 10 удалить файлы дампов можно через приложение Параметры. Открыв последнее, перейдите в раздел Система → Память → Временные файлы, отметьте флажком пункт «Файлы дампа памяти и системных ошибок» и нажмите кнопку «Удалить файлы».
Более универсальным способом очистки (работает в Windows 10, 8.1 и 7) является использование классической утилиты cleanmgr. Запустите ее одноименной командой через диалоговое окошко «Выполнить», выберите очищаемый диск C и нажмите в открывшемся окне очистки диска кнопку «Очистить системные файлы».
Опять выберите системный раздел, нажмите «OK» и дождитесь завершения сканирования. Отметьте в открывшемся окошке флажками пункты файлов дампов, нажмите «OK» и подтвердите действие.
↑ Удаление дампов в сторонних чистильщиках
Наконец, для удаления временных файлов дампов можно использовать сторонние программы-чистильщики, ту же CCleaner. Кстати, по умолчанию этот чистильщик уже настроен на удаление дампов памяти, в чём вы сами можете убедиться, внимательно изучив список удаляемых данных в категории «Система» на вкладке «Система». Примечательно, что CCleaner обнаруживает дампы, созданные не только Windows, но и другими программами, в частности, браузером Google Chrome.
Приводить инструкцию по использованию чистильщика здесь не будем, программа достаточно известная, отметим лишь, что по сравнению с ручным поиском она выводит меньше результатов, но она же предлагает и более безопасное решение проблемы.
Источник
990x.top
Простой компьютерный блог для души)
Debug Dump Files — что это такое и можно ли удалить?
Приветствую друзья! Не все файлы можно удалять в Windows. Да, есть временные файлы, которые называются temp-файлы, для них даже существует специальная папка Temp (%temp%). Еще есть log-файлы, в которых содержится информация о работе программы, как об успешных операциях, так и об ошибках. А еще есть файлы, которые содержат много специфичной информации именно об ошибке — сегодня о таких мы поговорим.
Debug Dump Files — что это такое?
Служебные файлы, созданные отладчиком Windows. Содержат данные об условиях, при которых произошла ошибка/сбой.
Отвечу коротко — если компьютер работает нормально, без глюков — можно спокойно удалить. Но даже если есть глюки — 95% что эти файлы так и останутся бесполезными.
Файлы нужны только для анализа, чтобы понять причину ошибки/сбоя. То есть сами по себе они лежат без дела, но могут понадобиться, если вы захотите узнать почему произошла ошибка или сбой. Обычно в этом нужно разбираться, чтобы изучить файл, также могут быть нужны специальные программы для анализа.
Debug Dump Files это что-то вроде снимка системы на момент ошибки. Могут иметь расширение *.dmp, они могут быть скрытыми, в них может быть также содержимое оперативной памяти на момент ошибки.
Например при ошибке синий экран — тоже создается дамп-файл, анализ которого можно выполнить в утилите BlueScreenView:
Но опять же — провести анализ, выявить причину может только опытный пользователь.
Debug Dump Files — можно ли удалить?
Как мы уже выяснили — да. Только не стоит удалять вручную, лучше это дело доверить встроенному компоненту очистки системы.
Чтобы удалить Debug Dump Files, а также другие мусорные данные:
Также очистку диска можно выполнить из свойств диска — правой кнопкой по диску (в окне Мой компьютер) > свойства > на вкладке Общие будет кнопка Очистка диска:
Это Windows 7, в Windows 10 должно быть все примерно так, но почему-то лично у меня этой кнопки нет. Но команда cleanmgr при этом работает.
Собственно окошко с вкладкой, где можно выбрать что удалять:
Поверьте — встроенная чистилка мусора пожалуй самая безопасная из всех чистилок. Точно к ошибкам не приведет.
Иногда Debug Dump Files могут занимать прилично много места, поэтому конечно их стоит удалить:
Также, если я не ошибаюсь, то в CCleaner есть аналогичная опция — Memory Dumps и возможно что это тоже самое что и Debug Dump Files:
Но если вы неопытный пользователь, то советую вам чистить систему только встроенным инструментом (cleanmgr).
Описание некоторых пунктов из очистки
Скажу честно — при очистке я ставлю галочки везде и еще никогда не было с этим проблем. Даже CCleaner и то считается безопасной чистилкой, что тогда стоит говорить про встроенный инструмент.
Источник
Microsoft Windows debugging symbols можно ли удалить?
Debug Dump Files — что это такое и можно ли удалить?
Приветствую друзья! Не все файлы можно удалять в Windows. Да, есть временные файлы, которые называются temp-файлы, для них даже существует специальная папка Temp (%temp%). Еще есть log-файлы, в которых содержится информация о работе программы, как об успешных операциях, так и об ошибках. А еще есть файлы, которые содержат много специфичной информации именно об ошибке — сегодня о таких мы поговорим.
Служебные файлы, созданные отладчиком Windows. Содержат данные об условиях, при которых произошла ошибка/сбой.
Отвечу коротко — если компьютер работает нормально, без глюков — можно спокойно удалить. Но даже если есть глюки — 95% что эти файлы так и останутся бесполезными.
Файлы нужны только для анализа, чтобы понять причину ошибки/сбоя. То есть сами по себе они лежат без дела, но могут понадобиться, если вы захотите узнать почему произошла ошибка или сбой. Обычно в этом нужно разбираться, чтобы изучить файл, также могут быть нужны специальные программы для анализа.
Debug Dump Files это что-то вроде снимка системы на момент ошибки. Могут иметь расширение *.dmp, они могут быть скрытыми, в них может быть также содержимое оперативной памяти на момент ошибки.
Например при ошибке синий экран — тоже создается дамп-файл, анализ которого можно выполнить в утилите BlueScreenView:
Но опять же — провести анализ, выявить причину может только опытный пользователь.
Debug Dump Files — можно ли удалить?
Как мы уже выяснили — да. Только не стоит удалять вручную, лучше это дело доверить встроенному компоненту очистки системы.
Чтобы удалить Debug Dump Files, а также другие мусорные данные:
Также очистку диска можно выполнить из свойств диска — правой кнопкой по диску (в окне Мой компьютер) > свойства > на вкладке Общие будет кнопка Очистка диска:
Это Windows 7, в Windows 10 должно быть все примерно так, но почему-то лично у меня этой кнопки нет. Но команда cleanmgr при этом работает.
Собственно окошко с вкладкой, где можно выбрать что удалять:
Поверьте — встроенная чистилка мусора пожалуй самая безопасная из всех чистилок. Точно к ошибкам не приведет.
Иногда Debug Dump Files могут занимать прилично много места, поэтому конечно их стоит удалить:
Также, если я не ошибаюсь, то в CCleaner есть аналогичная опция — Memory Dumps и возможно что это тоже самое что и Debug Dump Files:
Но если вы неопытный пользователь, то советую вам чистить систему только встроенным инструментом (cleanmgr).
Описание некоторых пунктов из очистки
Скажу честно — при очистке я ставлю галочки везде и еще никогда не было с этим проблем. Даже CCleaner и то считается безопасной чистилкой, что тогда стоит говорить про встроенный инструмент.
Debugging: Развертывание сервера отладочной информации
Копая залежи документов на своем рабочем компе обнаружил инструкцию по развертыванию сервера отладочной информации, которую писал два-три года назад. Попробую представить её хабросообществу. Данная инструкция будет полезна C++ разработчикам под Windows, которые хотят использовать отладку релизных версий своего продукта (удаленно и напрямую, на своих компах и компах тестировщиков), а также делать разбор крашдампов (postmortem debugging).
1. Подготовка окружения
Для развертывания хранилища отладочных сиволов понадобится: Следует установить дистрибутив Debugging Tools For Windows (будем считать, что дистрибутив установлен в папку “C:Program FilesDebugging Tools For Windows”), и установить все дистрибутивы отладочных символов операционных систем в какую либо папку (будем считать, что они установлены в папку “C:TempSymbols”).
2. Организация хранилища отладочной информации
Хранилище символов будем организовывать используя сервер отладочной информации symsrv.dll компании Microsoft. Для этого создадим папку для хранилища символов, например C:Symbols. Далее следует установить на неё права на чтение для любых пользователей компьютера. Следующим шагом станет добавление файлов отладочных символов в хранилище. Для этого используем программу “symstore.exe” из комплекта Debugging Tools For Windows. Выполним следующую команду:
symstore add /r /3 /f c:TempSymbols*.* /s c:Symbols /compress
данная команда пройдет по всем вложеным папкам каталога “c:TempSymbols” и скопирует оттуда бинарные файлы и файлы с отладочной информацией в трёхуровневое хранилище символов расположенное в папку “C:Symbols”. Архивирует их и создаст индексные файлы для ускорения доступа и хранения информации о транзакциях доступа на изменение хранилища. Описание ключей этой команды:
Команда будет выполнятся достаточно долго и результатом её выполнения будет создание хранилища отладочной информации в папке “C:Symbols”. После данного этапа папку “C:TempSymbols” можно удалить.
3. Организация доступа к хранилищу отладочной информации через протокол http
На данном этапе следует настроить Internet Information Services на предоставление доступа к хранилищу. Вначале следует создать виртуальную папку:
Далее следует настроить типы MIME.
4. Инсталляция прокси-фильтра для обновления символов через интернет
Прокси-фильтр нужен для того чтобы отладчик не нешедший необходимые ему файлы отладочных символов попытался взять из из публичного хранилища Microsoft, тем самым выполнив обновление хранилища символов. Прокси фильтр предоставляемый компанией Microsoft в наборе Debugging Tools For Windows является ISAPI расширением и находится в каталоге “C:Program FilesDebugging Tools For Windowssymproxy”. Установим прокси фильтр:
Настроим IIS на работу с прокси-фильтром:
Запустим файл “iisreset.exe” чтобы рестартовать IIS с новыми настройками.
5. Настройка параметров прокси сервера для symproxy.dll
В Debugging Tools For Windows есть недочет, связанный с тем, что “symproxy.dll” не перенаправляет вызовы на получение сжатых файлов отладочных символов на сайт Microsoft если “symproxy.dll” работает с интернетом напрямую (без прокси сервера). Для того чтобы устранить данный дефект необходимо поставить локальный прокси сервер и с помощью утилиты “proxycfg.exe” настроить систему на работу с прокси сервером.
6. Настройка клиентских компьютеров на работу с сервером отладочной информации
На каждом клиентском компьютере (компьютере разработчика) следует создать папку для кеширования символов, например “C:LocalSymbols”. Установить дистрибутив Debugging Tools For Windows и создать переменные окружения:
Первая переменная отвечает за путь поиска отладочных символов, вторая за поиск бинарников которые подходят к этим символам (необходима при разборе крашдампов, т.е. когда у вас нет непосредственного доступа к бинарникам упавшей программы).
Резюме
Итак, опишу полученый результат. У нас теперь есть сервер, на котором находятся отладочные символы операционных систем и некоторых библиотек и продуктов Microsoft. При этом если идет к серверу обращение на получение символов какой-то новой версии софта, то этот запрос будет переадресован на сайт Microsoft, символы будут скачаны оттуда и лягут на ваш сервер.
На компьютерах девелоперов у вас будет организован локальный репозиторий символов, которые будут скачиваться с вашего сервера символов по требованию отладчика (Visual Studio, WinDbg и т.п.). Для полноты работы символьного сервера вам остается только добавить в вашу систему сборки:
Заключение
Данная инструкция, как я и говорил, была написана 2-3 года назад, поэтому там фигурирует компьютер с Win2003, думаю вам не составит труда по аналогии развернуть сервер символов на Win2008 и последней версии IIS. Да и виртуалки, на которой можно было бы снять скриншоты настроки, тоже не оказалось. Но описание достаточно детальное, поэтому думаю что вы разберетесь.
Возможно проблема описанная в пункте 5 уже не актуальна, я не проверял.
Более детальную информацию по работе с серверами отладочной информации можно почерпнуть их хелп файла Debugging Tools For Windows, для затравки скажу что ещё можно привязать ваш сервер отладочной информации с сервером хранения исходников, и тогда при разборе крашдампа вы сможете видеть не только стек падения программы, но и место в исходниках, валидных на момент сборки.
Для выявления причин возникновения синих экранов (BSOD) требуется произвести анализ дампа памяти. В подавляющем большинстве случаев достаточно минидампа, который создается системой при критических ошибках.
В этой статье содержится пошаговая инструкция по установке и настройке WinDBG — мощного средства отладки, позволяющего выявить истинную причину возникновения BSOD.
Шаг 2 — Установка WinDBG
Для проведения анализа дампов памяти вам понадобится установить отладчик WinDBG, который входит в состав пакета Windows SDK. На момент написания статьи последние доступные версии Windows SDK:
Шаг 3 — Сопоставление файлов.dmp с WinDBG
Для упрощения процедуры чтения и анализа дампов памяти выполните сопоставление файлов.dmp с WinDBG. Это позволит открывать файлы дампов из проводника сразу в WinDBG минуя его предварительный запуск.
Шаг 4 — Настройка сервера символов для получения файлов символов отладки
Установка и первичная настройка WinDBG завершена. Для того, чтобы изменить его внешний вид можете перейти в меню View — настройки шрифтов вы найдете выбрав пункт Font, а настройки окон консолей в Options.
В момент критического сбоя операционная система Windows прерывает работу и показывает синий экран смерти (BSOD). Содержимое оперативной памяти и вся информация о возникшей ошибке записывается в файл подкачки. При следующей загрузке Windows создается аварийный дамп c отладочной информацией на основе сохраненных данных. В системном журнале событий создается запись о критической ошибке.
Внимание! Аварийный дамп не создается, если отказала дисковая подсистема или критическая ошибка возникла на начальной стадии загрузки Windows.
Типы аварийных дампов памяти Windows
На примере актуальной операционной системы Windows 10 (Windows Server 2016) рассмотрим основные типы дампов памяти, которые может создавать система:
Как включить создание дампа памяти в Windows?
С помощью Win+Pause откройте окно с параметрами системы, выберите «Дополнительные параметры системы» (Advanced system settings). Во вкладке «Дополнительно» (Advanced), раздел «» (Startup and Recovery) нажмите кнопку «Параметры» (Settings). В открывшемся окне настройте действия при отказе системы.
Поставьте галку в чек-боксе «Записать события в системный журнал» (Write an event to the system log), выберите тип дампа, который должен создаваться при сбое системы. Если в чек-боксе «Заменять существующий файл дампа» (Overwrite any existing file) поставить галку, то файл будет перезаписываться при каждом сбое. Лучше эту галку снять, тогда у вас будет больше информации для анализа.
Отключите также автоматическую перезагрузку системы (Automatically restart).
В большинстве случаев для анализа причины BSOD вам будет достаточно малого дампа памяти.
Теперь при возникновении BSOD вы сможете проанализировать файл дампа и найти причину сбоев. Мини дамп по умолчанию сохраняется в папке %systemroot%minidump. Для анализа файла дампа рекомендую воспользоваться программой WinDBG(Microsoft Kernel Debugger).
Установка WinDBG в Windows
Файл называется winsdksetup.exe, размер 1,3 МБ.
Запустите установку и выберите, что именно нужно сделать – установить пакет на этот компьютер или загрузить для установки на другие компьютеры. Установим пакет на локальный компьютер.
Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows.
После установки ярлыки WinDBG можно найти в стартовом меню.
Настройка ассоциации.dmp файлов с WinDBG
Для того, чтобы открывать файлы дампов простым кликом, сопоставьте расширение.dmp с утилитой WinDBG.
Настройка сервера отладочных символов в WinDBG
Отладочные символы (debug-символы или symbol files) – это блоки данных, генерируемые в процессе компиляции программы совместно с исполняемым файлом. В таких блоках данных содержится информация о именах переменных, вызываемых функциях, библиотеках и т.д. Эти данные не нужны при выполнении программы, но полезные при ее отладке. Компоненты Microsoft компилируются с символами, распространяемыми через Microsoft Symbol Server.
Настройте WinDBG на использование Microsoft Symbol Server:
WinDBG произведет поиск символов в локальной папке и, если не обнаружит в ней необходимых символов, то самостоятельно загрузит символы с указанного сайта. Если вы хотите добавить собственную папку с символами, то можно сделать это так:
Анализ аварийного дампа памяти в WinDBG
Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.
Команды вводятся в командную строку, расположенную внизу окна.
Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды!analyze –v (листинг неполный).
* ** Bugcheck Analysis ** ****************************************************************************** Символическое имя STOP-ошибки (BugCheck) KERNEL_SECURITY_CHECK_FAILURE (139)
Описание ошибки (Компонент ядра повредил критическую структуру данных. Это повреждение потенциально может позволить злоумышленнику получить контроль над этой машиной):
A kernel component has corrupted a critical data structure. The corruption could potentially allow a malicious user to gain control of this machine.
Аргументы ошибки:
Arguments:Arg1: 0000000000000003, A LIST_ENTRY has been corrupted (i.e. double remove).Arg2: ffffd0003a20d5d0, Address of the trap frame for the exception that caused the bugcheckArg3: ffffd0003a20d528, Address of the exception record for the exception that caused the bugcheckArg4: 0000000000000000, ReservedDebugging Details:
Счетчик показывает сколько раз система упала с аналогичной ошибкой:
Код STOP-ошибки в сокращенном формате:
Процесс, во время исполнения которого произошел сбой (не обязательно причина ошибки, просто в момент сбоя в памяти выполнялся этот процесс):
Расшифровка кода ошибки: В этом приложении система обнаружила переполнение буфера стека, что может позволить злоумышленнику получить контроль над этим приложением.
ERROR_CODE: (NTSTATUS) 0xc0000409 — The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 — The system detected an overrun of a stack-based buffer in this application. This overrun could potentially allow a malicious user to gain control of this application.
Последний вызов в стеке:
LAST_CONTROL_TRANSFER: from fffff8040117d6a9 to fffff8040116b0a0
Стек вызовов в момент сбоя:
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007f`475307da
Участок кода, где возникла ошибка:
Имя модуля в таблице объектов ядра. Если анализатору удалось обнаружить проблемный драйвер, имя отображается в полях MODULE_NAME и IMAGE_NAME:
MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe
Microsoft Windows debugging symbols можно ли удалить?
Здравствуйте друзья, сегодня разберем интересную тему, которая поможет вам в будущем при появлении синего экрана смерти (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:WINDOWSMinidump. Тогда просто нажмите кнопку «По умолчанию».
Что можно видеть в программе? У нас есть пункты меню, часть окна с названиями файлов дампов и вторая часть окна – содержимое дампов памяти.
Как я говорил в начале статьи, дампы могут хранить драйвера, сам скриншот «экрана смерти» и другая полезная информация, которая нам может пригодиться.
Итак, в первой части окна, где файлы дампов, выбираем нужный нам дамп памяти. В следующей части окна смотрим на содержимое. Красноватым цветом помечены драйвера, находившиеся в стеке памяти. Как раз они и есть причина синего экрана смерти.
В интернете можно найти все о коде ошибке и драйвере, который может быть виной BSoD. Для этого нажимаем «Файл», а потом «Найти в Google код ошибки + Драйвер».
Источник
Одним из наиболее часто встречающихся отказов работы Windows — системные исключения, которые пользователь видит в виде «синего экрана смерти» (BSOD). Как правило, эта фатальная ошибка возникает или из-за неисправности драйверов, оборудования (чаще при загрузке ОС) или из-за действия вирусов и антивирусов.
На синем экране смерти содержится информация о причинах, вызвавших исключение (в виде кода STOP-ошибки вида 0x0000007b), адреса в памяти, при обращении к которым произошло исключение и прочая полезная информация. Такая информация называется STOP-ошибкой, переменными параметрами которой как раз являются адреса памяти. Иногда там же содержится имя файла, вызвавшего исключение.
Вся эта информация содержится на экране недолго (до 100 сек.), после чего компьютер перезагружается. Во это непродолжительное время как правило, формируется дамп памяти, который записывается в файл. Один из важных профессиональных способов диагностики сбоев — анализ дампа памяти, о котором речь подробно пойдет в этой статье.
Что такое дамп
- dump (англ.) – мусорная куча; свалка; дыра; трущоба.
- dump (memory dump) – 1) дамп, вывод содержимого оперативной памяти на печать или экран; 2) «снимок» оперативной памяти; данные, получаемые в результате дампинга; 3) аварийное снятие, выключение, сброс.
- dumping – дампинг, снятие дампа.
Настройки для сохранения дампа памяти хранятся в системном реестре Windows.
Информация о дампе памяти в системном Реестре:
В разделе Реестра Windows [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl] аварийный дамп памяти определяется следующими параметрами:
– 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 (опция Отправить административное оповещение окна Загрузка и восстановление).
Как система создает файл аварийного дампа памяти
Во время загрузки операционная система проверяет параметры создания аварийного дампа в разделе реестра [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl]. Если указан хотя бы один параметр, то система генерирует карту блоков диска, занимаемых файлом подкачки на загрузочном томе, и сохраняет ее в памяти. Система также определяет, какой драйвер дискового устройства управляет загрузочным томом, вычисляет контрольные суммы для образа драйвера в памяти и для структур данных, которые должны быть целыми, чтобы драйвер мог выполнять операции ввода/вывода.
После сбоя ядро системы проверяет целостность карты страничного файла, дискового драйвера и управляющих структур дискового драйвера. Если целостность этих структур не нарушена, то ядро системы вызывает специальные функции ввода/вывода дискового драйвера, предназначенные для сохранения образа памяти после системного сбоя. Эти функции ввода/вывода самодостаточны и не полагаются на службы ядра системы, поскольку в программах, отвечающих за запись аварийного дампа, нельзя делать никаких предположений о том, какие части ядра системы или драйверы устройств при сбое были повреждены. Ядро системы записывает данные из памяти по карте секторов файла подкачки (при этом ему не приходится использовать драйверы файловой системы).
Сначала ядро системы проверяет состояние каждого компонента, задействованного в процессе сохранения дампа. Это делается для того, чтобы при прямой записи в секторы диска не повредить данные, лежащие вне страничного файла. Размер страничного файла должен быть на 1МБ больше размера физической памяти, потому что при записи информации в дамп создается заголовок, в котором содержатся сигнатура аварийного дампа и значения нескольких важнейших переменных ядра системы. Заголовок занимает меньше 1МБ, но операционная система может увеличивать (или уменьшать) размер файла подкачки не менее чем на 1МБ.
После загрузки системы Session Manager (Диспетчер сеанса Windows NT; дисковый адрес – WINDOWSsystem32smss.exe) инициализирует страничные файлы системы, используя для создания каждого файла собственную функцию NtCreatePagingFile. NtCreatePagingFile определяет, существует ли инициализируемый страничный файл, и если да, то имеется ли в нем заголовок дампа. Если заголовок есть, то NtCreatePagingFile посылает в Session Manager специальный код. После этого Session Manager запускает процесс Winlogon (Программа входа в систему Windows NT; дисковый адрес – WINDOWSsystem32winlogon.exe), который извещается о существовании аварийного дампа. Winlogon запускает программу SaveDump (Программа сохранения копии памяти Windows NT; дисковый адрес – WINDOWSsystem32savedump.exe), которая анализирует заголовок дампа и определяет дальнейшие действия в аварийной ситуации.
Если заголовок указывает на существование дампа, то SaveDump копирует данные из страничного файла в файл аварийного дампа, имя которого задано REG_EXPAND_SZ-параметром DumpFile раздела Реестра [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl]. Пока SaveDump переписывает файл дампа, операционная система не задействует ту часть страничного файла, в которой содержится аварийный дамп. В это время объем виртуальной памяти, доступной для системы и приложений, уменьшается на размер дампа (при этом на экране могут появиться сообщения, указывающие на нехватку виртуальной памяти). Затем SaveDump информирует диспетчер памяти о завершении сохранения дампа, и тот высвобождает ту часть страничного файла, в которой хранится дамп, для общего пользования.
Сохранив файл дампа, программа SaveDump делает запись о создании аварийного дампа в журнале событий Система, например: «Компьютер был перезагружен после критической ошибки: 0x100000d1 (0xc84d90a6, 0x00000010, 0x00000000, 0xc84d90a6). Копия памяти сохранена: C:WINDOWSMinidumpMini060309-01.dmp».
Если включена опция Отправить административное оповещение, то SaveDump отправляет оповещение администратору.
Разновидности дампов
- Полный дамп памяти записывает всё содержимое системной памяти при возникновении неустранимой ошибки. Для этого варианта необходимо иметь на загрузочном томе файл подкачки, размер которого равен объему всей физической оперативной памяти плюс 1МБ. По умолчанию полный дамп памяти записывается в файл %SystemRoot%Memory.dmp. При возникновении новой ошибки и создании нового файла полного дампа памяти (или дампа памяти ядра) предыдущий файл заменяется (перезаписывается). Параметр Полный дамп памяти недоступен на ПК, на которых установлена 32-битная операционная система и 2 или более гигабайта оперативной памяти.
При возникновении новой ошибки и создании нового файла полного дампа памяти предыдущий файл заменяется.
- Дамп памяти ядра записывает только память ядра, благодаря чему процесс записи данных в журнал при внезапной остановке системы протекает быстрее. В зависимости от объема физической памяти ПК в этом случае для файла подкачки требуется от 50 до 800МБ или одна треть физической памяти компьютера на загрузочном томе. По умолчанию дамп памяти ядра записывается в файл %SystemRoot%Memory.dmp.
Этот дамп не включает нераспределенную память или память, выделенную для программ пользовательского режима. Он включает только память, выделенную для ядра и аппаратно-зависимого уровня (HAL) в Windows 2000 и более поздних версиях системы, а также память, выделенную для драйверов режима ядра и других программ режима ядра. В большинстве случаев такой дамп является наиболее предпочтительным вариантом. Он занимает намного меньше места по сравнению с полным дампом памяти, при этом исключая только те сектора памяти, которые, скорее всего, не связаны с ошибкой.
При возникновении новой ошибки и создании нового файла дампа памяти ядра предыдущий файл заменяется.
- Малый дамп памяти записывает наименьший объем полезной информации, необходимых для определения причины неполадок. Для создания малого дампа памяти необходимо, чтобы размер файла подкачки составлял как минимум 2МБ на загрузочном томе.
Файлы малого дампа памяти содержат следующие сведения:
- сообщение о неустранимой ошибке, ее параметры и прочие данные;
- список загруженных драйверов;
- контекст процессора (PRCB), на котором произошел сбой;
- сведения о процессе и контекст ядра (EPROCESS) для процесса, вызвавшего ошибку;
- сведения о процессе и контекст ядра (ETHREAD) для потока, вызвавшего ошибку;
- стек вызовов в режиме ядра для потока, вызвавшего ошибку.
Файл малого дампа памяти используется при ограниченном пространстве жесткого диска. Однако из-за ограниченности содержащихся в нем сведений в результате анализа этого файла не всегда удается обнаружить ошибки, которые не были непосредственно вызваны потоком, выполнявшимся в момент ее возникновения.
При возникновении следующей ошибки и создании второго файла малого дампа памяти предыдущий файл сохраняется. Каждому дополнительному файлу дается уникальное имя. Дата закодирована в имени файла. Например, Mini051509-01.dmp — это первый файл дампа памяти, созданный 15 мая 2009 г. Список всех файлов малого дампа памяти хранится в папке %SystemRoot%Minidump.
Операционная система Windows XP, несомненно, значительно надежнее предыдущих версий, – благодаря усилиям как разработчиков Microsoft, так и разработчиков драйверов аппаратного обеспечения, так и разработчиков прикладного программного обеспечения. Однако аварийные ситуации – всевозможные сбои и крахи системы – неизбежны, и от того, владеет ли пользователь ПК знаниями и навыками в их устранении, зависит, придется ему затратить несколько минут на поиск и устранение неисправности (например, на обновление/отладку драйвера или переустановку прикладной программы, вызывающей системный сбой), – или несколько часов на переустановку/настройку операционной системы и прикладного программного обеспечения (что не гарантирует отсутствия сбоев и крахов в дальнейшем!).
Многие системные администраторы всё еще пренебрегают анализом аварийных дампов Windows, считая, что работать с ними слишком трудно. Трудно, но можно: даже если, например, анализ одного дампа из десяти окажется успешным, – усилия, потраченные на освоение простейших приемов анализа аварийных дампов, будут не напрасны!..
Приведу примеры из своей «сисадминской» практики.
В локальной сети без видимой причины («железо» в порядке, отсутствие вирусов гарантировано, пользователи – с «нормальными руками») «полегли» несколько рабочих станций с Windows XP SP1/SP2 «на борту». Компьютеры загрузить в нормальном режиме не удавалось, – доходило до «Приветствия» – и на перезагрузку до бесконечности. При этом, в Безопасном режиме ПК загружались.
Изучение дампов памяти позволило выявить причину неисправности: виновником оказался антивирус Касперского, точнее, свежие антивирусные базы (если еще точнее, то два модуля баз – base372c.avc, base032c.avc).
…Еще был такой случай. На локальном ПК с Windows XP SP3 при попытке открыть видеофайлы форматов .avi и .mpeg происходила перезагрузка. Изучение дампа памяти позволило выявить причину неисправности – файл nv4_disp.dll драйвера видеокарты NVIDIA GeForce 6600. После обновления драйвера неисправность была устранена. Вообще, драйвер nv4_disp.dll — один из самых нестабильных драйверов, который часто приводил к BSOD.
В обоих указанных случаях изучение аварийного дампа памяти позволило до минимума (несколько минут!) свести время для диагностирования и устранения неисправности.
Анализ дампа памяти
Для анализа аварийных дампов памяти существует множество программ, например, DumpChk, Kanalyze, WinDbg. Рассмотрим анализ аварийных дампов памяти с помощью программы WinDbg (входит в состав Debugging Tools for Windows).
Установка средств отладки
- посетите веб-узел страницу Download the Debugging Tools for Windows корпорации Microsoft;
- загрузите Windows SDK и выберите только Debugging Tools for Windows при установке (средства отладки также включены в пакет Windows WDK? yj он больше размером);
- Если SDK уже установлен, то откройте Settings, перейдите в Apps & features, выберите Windows Software Development Kit, и затем выберите Modify чтобы изменить установку и добавить Debugging Tools for Windows.
- для интерпретации файлов дампа памяти необходимо также загрузить пакет символов (Symbol Packages, так называемые символьные файлы, или файлы символов отладки) для своей версии Windows.
- выберите свою версию Windows, скачайте и запустите установочный файл Symbol Packages;
- в окне с лицензионным соглашением нажмите Yes;
- в следующем окне выберите папку для установки (по умолчанию предлагается WINDOWSSymbols) –> OK –> Да;
- в окне Microsoft Windows Symbols с сообщением «Installation is complete» нажмите OK.
Примечание: К сожалению, Microsoft прекратила публиковать символьные файлы из-за частоты обновления Windows 10. Теперь компания предлагает их скачивать онлайн через Symbol server или создавать символьные ссылки. Как подключиться к символьному серверу, описано здесь: https://docs.microsoft.com/ru-ru/windows-hardware/drivers/debugger/microsoft-public-symbols. Альтернативно, можно подключиться к символам на машине офлайн используя SymChk.
Использование программы WinDbg для анализа аварийных дампов памяти
- запустите WinDbg (по умолчанию устанавливается в папку Program FilesDebugging Tools for Windows);
- выберите меню File –> Symbol File Path…;
- в окне Symbol Search Path нажмите кнопку Browse…;
- в окне Обзор папок укажите расположение папки Symbols (по умолчанию – WINDOWSSymbols) –> OK –> OK;
- выберите меню File –> Open Crash Dump… (или нажмите Ctrl + D);
- в окне Open Crash Dump укажите расположение Crash Dump File (*.dmp) –> Открыть;
- в окне Workspace с вопросом «Save information for workspace?», установите флажок Don’t ask again –> No;
- в окне WinDbg откроется окно Command Dump <путь_и_имя_файла_дампа> с анализом дампа;
- просмотрите анализ дампа памяти;
- в разделе «Bugcheck Analysis» будет указана возможная причина краха, например, «Probably caused by: smwdm.sys (smwdm+454d5)»;
- для просмотра детальной информации нажмите ссылку «!analyze -v» в строке «Use !analyze -v to get detailed debugging information»;
- закройте WinDbg;
- используйте полученную информацию для устранения причины неисправности.
Например, на следующем скриншоте причина неисправности – файл nv4_disp.dll драйвера видеокарты:
[Посещений: 3 017, из них сегодня: 1]