Проводим анализ дампа памяти или как выявить причину BSoD?

Здравствуйте друзья, сегодня разберем интересную тему, которая поможет вам в будущем при появлении синего экрана смерти (BSoD).

Как и мне, так и многим другим пользователям приходилось наблюдать появление экрана с синим фоном, на котором что-то написано (белым по синему). Данное явление говорит о критической неполадке, как в программном обеспечении, например, конфликт драйверов, так и в физической неисправности какого-то компонента компьютера.

Недавно у меня снова появился голубой экран в Windows 10, но я быстро от него избавился и скоро об этом вам расскажу.

Хотите смотреть фильмы онлайн в хорошем качестве? Тогда переходите по ссылке.

Итак, большинство пользователей не знают, что BSoD можно анализировать, чтобы впоследствии понять проблемы критической ошибки. Для таких случаев Windows создает на диске специальные файлы – дампы памяти, их то мы и будем анализировать.

Есть три типа дампа памяти:

  • Полный дамп памяти – эта функция позволяет полностью сохранить содержимое оперативной памяти. Он редко используется, так как представьте, что у вас 32 Гб оперативной памяти, при полном дампе весь этот объем сохранится на диске.
  • Дамп ядра – сохраняет информацию о режиме ядра.
  • Малый дамп памяти – сохраняет небольшой объем информации о ошибках и загруженных компонентов, которые были на момент появления неисправности системы. Мы будем использовать именно этот тип дампа, потому что она даст нам достаточное количество сведений о BSoD.

Расположение, как малого, так и полного дампа отличается, например, малый дамп находится по следующему пути: %systemroot%minidump.

Полный дамп находится здесь: %systemroot%.

Для анализа дампов памяти существуют различные программы, но мы воспользуемся двумя. Первая – Microsoft Kernel Debuggers, как понятно из названия утилита от Microsoft. Скачать ее можно с официального сайта. Вторая программа – BlueScreenView, бесплатная программка, скачиваем отсюда.

Анализ дампа памяти с помощью Microsoft Kernel Debuggers

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

Это еще не все, вам нужно скачать и установить пакет отладочных символов, нужные для программы. Называется Debugging Symbols. Каждая версия данного пакета тоже скачивается под определённою ОС, для начала узнайте какая у вас система, а потом скачивайте. Дабы вам не искать где попало эти символы, вот ссылка на скачивание. Установка, желательно, должна производиться по этому пути: %systemroot%symbols.

Теперь можно запускать наш отладчик, окно которого будет выглядеть вот так:

image

Прежде чем проанализировать дампы мы кое-что настроим в утилите. Во-первых, нужно указать программе, куда мы установили отладочные символы. Для этого нажимаем на кнопку «File» и выбираем пункт «Symbol File Path», потом указываем путь до символов.

image

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

Можно сделать показ только драйверов, которые были на момент появления ошибки. Для этого нужно нажать «Настройки» – «Режим нижнего окна» – «Только драйвера, найденные в крэш-стеке». Либо нажать клавишу F7.

Чтобы показать скриншот BSoD нажмите клавишу F8. Для показа всех драйверов и файлов нажимаем F6.

Ну вот собственно и все. Теперь вы знаете, как узнать о проблеме «Синего экрана смерти», и в случае чего найти решение в интернете, либо на этом сайте. Можете предлагать свои коды ошибок, а я постараюсь писать для каждой статьи по решению проблемы.

Что такое Зеленый экран смерти GSOD

Также не забывайте задавать вопросы в комментариях.

Создание пользовательского обработчика уведомлений для TSLab. Часть 2

17 июня, 2016

Знания и навыки требуемые для освоения материала:

  • Работа с командной строкой
  • Работа с архиватором (запаковать/ распаковать файл)

Для выявления причин сложных ошибок в программе TSLab может понадобится дамп памяти программы. Далее я расскажу в каких случаях он поможет и как его получить. Что такое дамп можно почитать здесь.

В начале небольшое введение, что из себя представляет код программы TSLab. Программа построена на управляемом коде и выполняется под управлением .NET Framework. Но для получения данных от брокера она взаимодействует с кодом провайдера данных, который в существующих вариантах (Transaq, SmartCom, Alor) выполнен в виде неуправляемого кода или машинного кода.

Если происходит ошибка в управляемом коде то она перехватывается внутри программы и, в зависимости от ошибки, Программа выполняется до тех пор пока не завершиться выполнение TSLabApp.exe, и в случае если она завершиться с ошибкой то создастся дамп.

Размер дампа варьируется от условий работы программы. Он хорошо сжимается, поэтому для пересылки его лучше запаковать, размер архива получится по крайней мере в два раза меньше исходного файла, и вложить его в сообщение на сайте поддержки http://support.tslab.ru/ с описанием ситуации.

Также есть еще один путь создания лога при падении программы, который работает на Windows 7. Для этого надо загрузить файл dump.reg (делается полный дамп) и кликнуть на нем. При этой операции требуются права администратора. Появится окно подтверждения, на котором надо ответить утвердительно.

После этого при падении программы TSLab в каталоге CrashDumps на диске с: будет создаваться дамп. В файле настроено, что максимально число дампов будет 2, далее новый дамп будет переписывать предыдущий. Более подробно можно почитать в msdn (на английском).

Дамп будет создаваться только при падении программы TSLab.

В дальнейшем, чтобы удалить данную функциональность, надо с помощью программы regedit удалить ветку реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsWindows Error ReportingLocalDumps.

—>

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

О том как включить функцию Minidump и суметь прочитать его и пойдет речь в этой статье.

1. Включить Minidump

“Пуск” – “Настройка” – “Панель управления” – “Система”, переходим во вкладку “Дополнительно”, в блоке Загрузка и восстановление жмем “Параметры”. Внизу должен быть выбран “Малый дамп памяти” и указан каталог, где он будет храниться:

Теперь, если друг система падает в Синий Экран Смерти (BSoD), то в каталоге C:WindowsMinidump создастся файл, в имени которого будет текущая дата.

2. Расшифровать Minidump

Для этого нам понадобится установить Debugging Tools for Windows и скачать утилиту непосредственно для расшифровки файла дампа kdfe.cmd

Когда установили Debugging Tools, копируем kdfe.cmd в корень диска C:

Запускаем командную строку “Пуск” -“Выполнить”, вписываем команду cmd

Теперь в черном окне пишем следующее: C:kdfe.cmd C:WINDOWSMinidumpMini120710-01.dmp , где “Mini120710-01.dmp” – имя вашего файла дампа.

Результат выглядит так:

В моем случае сбой системы был вызван браузером Google Chrome.

Это маленькая заметка о том, какие шаги необходимо выполнить для получения первичной информации об исполняемом файле, ставшем возможной причиной остановки работы операционной системы Windows — Blue Screen of Death (BSOD). По умолчанию ОС Windows настроена таким образом, что при возникновении ошибки приводящей к полной остановке работы системы, автоматически создаётся аварийный дамппамяти в виде файла MEMORY.DMP. Чтобы получить доступ к информации из этого файла, нам потребуется набор отладочных утилит Debugging tools for Windows из состава Windows Software Development Kit.

Переходим по ссылке

WDK and WinDbg downloads

и скачиваем онлайн-инсталлятор/загрузчик Standalone Debugging Tools for Windows (WinDbg) – файл sdksetup.exe. Запускаем инсталлятор и выбираем вариант установки…

На следующем шаге  выбора компонент к установке (Select the features you want to install) отмечаем только то, что нам нужно — Debugging tools for Windows и нажимаем Install

В указанную на первом экране папку из Интернета будет загружен и установлен набор утилит.

После окончания установки находим в меню “Пуск” или на стартовом экране в группе ярлыков Windows Kits утилиту WinDbg и запускаем её с правами администратора

Если по какой-то причине ярлык найти не удалось, то можно запустить исполняемый файл из каталога установки — С:Program Files (x86)Windows Kits8.1Debuggersx64windbg.exe

В главном меню программы WinDbg выбираем пункты File > Symbol File Path. В открывшееся окно вставляем строку определяющую пусть к локальному каталогу символьного кэша и его онлайн-источнику:

SRV*C:Windowssymbol_cache*http://msdl.microsoft.com/download/symbols

Сохраняем настройки, выбрав в главном меню пункты File > Save Workspace

Открываем файл дампа памяти, выбрав в меню File > Open Crash Dump

Выбираем файл MEMORY.DMP (по умолчанию расположен в каталоге C:Windows) и нажимаем Open

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

Туже самую информацию можно получить и с помощью командной строки используя примерно следующую последовательность команд:

cd /d "C:Program Files (x86)Windows Kits8.1Debuggersx64" kd -z "D:DOWNLOADSVM05MEMORY.DMP" .logopen C:Debuglog.txt .sympath srv*C:Windowssymbol_cache*http://msdl.microsoft.com/download/symbols

В этом примере вся информация о разборе дампа будет выгружена в читаемом виде в файл C:Debuglog.txt

Источники информации:

image

В меню слева выберите пункт «Дополнительные параметры системы». imageНа вкладке «Дополнительно» в разделе «Загрузка и восстановление» нажмите кнопку «Параметры». imageПараметры создания и сохранения дампов памяти находятся в разделе «Отказ системы». По умолчанию включены опции записи в системный журнал, автоматической перезагрузки и замены существующего дампа памяти, создается «Автоматический дамп памяти», хранящийся в %SystemRoot%MEMORY.DMP (т.е. файл MEMORY.DMP внутри системной папки Windows). Параметры для включения автоматического создания дампов памяти, используемые по умолчанию вы также можете увидеть на скриншоте ниже. image

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

Помимо «Автоматический дамп памяти» в параметрах сохранения отладочной информации есть и другие варианты:

  • Полный дамп памяти — содержит полный снимок оперативной памяти Windows. Т.е. размер файла дампа памяти MEMORY.DMP будет равен объему используемой (занятой) оперативной памяти на момент появления ошибки. Обычному пользователю обычно не требуется.
  • Дамп памяти ядра — содержит те же данные что и «Автоматический дамп памяти», по сути это одна и та же опция, за исключением того, как Windows устанавливает размер файла подкачки в случае выбора одной из них. В общем случае вариант «Автоматический» подходит лучше (подробнее для интересующихся, на английском — здесь.)
  • Малый дамп памяти — создание только мини дампов в C:WindowsMinidump. При выборе данной опции сохраняются файлы по 256 Кб, содержащие базовую информацию о синем экране смерти, списке загруженных драйверов, процессах. В большинстве случаев при непрофессиональном использовании (например, как в инструкциях на этом сайте по исправлению ошибок BSoD в Windows 10), используется именно малый дамп памяти. Например, при диагностике причины синего экрана смерти в BlueScreenView используются файлы мини дампов. Однако в некоторых случаях может потребоваться и полный (автоматический) дамп памяти — часто службы поддержки ПО при возникновении неполадок (предположительно вызванных этим ПО) могут просить предоставить именно его.

Дополнительная информация

В случае, если вам нужно удалить дамп памяти, вы можете сделать это вручную, удалив файл MEMORY.DMP в системной папке Windows и файлы, содержащиеся в папке Minidump. Также можно использовать утилиту «Очистка диска» Windows (нажать клавиши Win+R, ввести cleanmgr и нажать Enter). В «Очистке диска» нажмите кнопку «Очистить системные файлы», а затем в списке отметьте файла дампа памяти для системных ошибок, чтобы удалить их (при отсутствии таких пунктов можно предположить, что дампы памяти пока не создавались).

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

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий