Windows dump file debugger

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, а также другие мусорные данные:

  1. Зажмите Win + R, появится окошко Выполнить, вставьте команду cleanmgr и нажмите ОК.
  2. Далее выберите системный диск. Удалить можно сначала на системном, а потом на других.
  3. Появится окошко Очистка диска. Потом нажимаете Очистить системные файлы (если такая кнопка есть).
  4. В списке Удалить следующие файлы вы можете отметить все пункты галочками — ничего опасного не удалится.
  5. Галочками отметили — нажимаем ОК. Начнется удаление. Внимание! Иногда оно занимает много времени, при этом может ПК грузить, будет казаться что зависло, но на самом деле нужно просто подождать.

Также очистку диска можно выполнить из свойств диска — правой кнопкой по диску (в окне Мой компьютер) > свойства > на вкладке Общие будет кнопка Очистка диска:

Это Windows 7, в Windows 10 должно быть все примерно так, но почему-то лично у меня этой кнопки нет. Но команда cleanmgr при этом работает.

Собственно окошко с вкладкой, где можно выбрать что удалять:

Поверьте — встроенная чистилка мусора пожалуй самая безопасная из всех чистилок. Точно к ошибкам не приведет.

Иногда Debug Dump Files могут занимать прилично много места, поэтому конечно их стоит удалить:

Также, если я не ошибаюсь, то в CCleaner есть аналогичная опция — Memory Dumps и возможно что это тоже самое что и Debug Dump Files:

Но если вы неопытный пользователь, то советую вам чистить систему только встроенным инструментом (cleanmgr).

Описание некоторых пунктов из очистки

  1. Временные файлы установки — которые были созданы во время установки софта. Например это могут быть данные, которые были распакованы из архива при установке, это частая ситуация. Вообще установщик ПО после установки программы должен чистить после себя мусор, но к сожалению это не всегда происходит.
  2. Старые файлы программы Chkdsk — потерянные фрагменты файлов, которые были созданы во время работы команды Chkdsk. Можно удалить. Что за команда Chkdsk? Например выключили свет внезапно. Некоторые данные не успели записаться на диск полностью в итоге данные стали повреждены. Чтобы все это исправить — автоматически может запуститься команда Chkdsk при включении ПК, которая при своей работе может создавать служебные файлы. Когда проверка Chkdsk выполнилась, то эти служебные файлы уже не нужны, поэтому их можно удалить.
  3. Предыдущие установки Windows — при установке Windows, предыдущая система может быть скопирована в специальную папку Windows.old, которая может занимать прилично места. Если вам не нужна предыдущая ваша Windows, то конечно эти данные можно удалить.
  4. Файлы дампа памяти для системных ошибок — информация о том при каких условиях произошли ошибки/сбои ПО или системы. Может быть нужна при анализе, чтобы выяснить почему произошла ошибка, такой анализ вряд ли сможет сделать обычный пользователь. В целом если ПК работает стабильно и без глюков — эти данные не нужны.
  5. Файлы, выброшенные обновлением Windows — как я понимаю это копии файлов, которые были обновлены на новые версии при обновлении Windows. То есть это системные файлы прошлой версии, они уже не используются системой, так как при обновлении были заменены на более новые версии.
  6. Пользовательские архивы отчетов об ошибках — файлы, которые используются для отчетов об ошибках и поиска решений. Как понимаю — возможно просто информация об ошибках, которые возникали в софте который вы используете.
  7. Файлы журнала обновлений Windows — данные, которые могут быть использовании при решении проблем с обновлениями.

Скажу честно — при очистке я ставлю галочки везде и еще никогда не было с этим проблем. Даже CCleaner и то считается безопасной чистилкой, что тогда стоит говорить про встроенный инструмент.

Enabling a Kernel-Mode Dump File

During a system crash, the Windows crash dump settings determine whether a dump file will be created, and if so, what size the dump file will be.

Читайте также:  Как работать с git linux

The Windows Control Panel controls the kernel-mode crash dump settings. Only a system administrator can modify these settings.

To change these settings, go to Control Panel > System and Security > System. Select Advanced system settings. Under Startup and Recovery, select Settings.

You will see the following dialog box:

Under Write Debugging Information, you can specify a kernel-mode dump file setting. Only one dump file can be created for any given crash. See Varieties of Kernel-Mode Dump Files for a description of different dump file settings.

You can also select or deselect the Write an event to the system log and Automatically restart options.

The settings that you select will apply to any kernel-mode dump file created by a system crash, regardless of whether the system crash was accidental or whether it was caused by the debugger. See Forcing a System Crash for details on causing a deliberate crash.

However, these settings do not affect dump files created by the .dump command. See Creating a Dump File Without a System Crash for details on using this command.

Анализ дампа памяти в Windows при BSOD с помощью WinDBG

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

Типы аварийных дампов памяти 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 10 enterprise

Как включить создание дампа памяти в 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 МБ.

Запустите установку и выберите, что именно нужно сделать – установить пакет на этот компьютер или загрузить для установки на другие компьютеры. Установим пакет на локальный компьютер.

Можете установить весь пакет, но для установки только инструмента отладки выберите Debugging Tools for Windows.

После установки ярлыки WinDBG можно найти в стартовом меню.

Настройка ассоциации .dmp файлов с WinDBG

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

  1. Откройте командную строку от имени администратора и выполните команды для 64-разрядной системы: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    для 32-разрядной системы:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. В результате типы файлов: .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 произведет поиск символов в локальной папке и, если не обнаружит в ней необходимых символов, то самостоятельно загрузит символы с указанного сайта. Если вы хотите добавить собственную папку с символами, то можно сделать это так:

Если подключение к интернету отсутствует, то загрузите предварительно пакет символов с ресурса Windows Symbol Packages.

Анализ аварийного дампа памяти в WinDBG

Отладчик WinDBG открывает файл дампа и загружает необходимые символы для отладки из локальной папки или из интернета. Во время этого процесса вы не можете использовать WinDBG. Внизу окна (в командной строке отладчика) появляется надпись Debugee not connected.

Читайте также:  Advanced info windows phone

Команды вводятся в командную строку, расположенную внизу окна.

Самое главное, на что нужно обратить внимание – это код ошибки, который всегда указывается в шестнадцатеричном значении и имеет вид 0xXXXXXXXX (указываются в одном из вариантов — STOP: 0x0000007B, 02.07.2019 0008F, 0x8F). В нашем примере код ошибки 0х139.

Отладчик предлагает выполнить команду !analyze -v, достаточно навести указатель мыши на ссылку и кликнуть. Для чего нужна эта команда?

  • Она выполняет предварительный анализ дампа памяти и предоставляет подробную информацию для начала анализа.
  • Эта команда отобразит STOP-код и символическое имя ошибки.
  • Она показывает стек вызовов команд, которые привели к аварийному завершению.
  • Кроме того, здесь отображаются неисправности IP-адреса, процессов и регистров.
  • Команда может предоставить готовые рекомендации по решению проблемы.

Основные моменты, на которые вы должны обратить внимание при анализе после выполнения команды !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:
——————

Счетчик показывает сколько раз система упала с аналогичной ошибкой:

Основная категория текущего сбоя:

Код 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

Стек вызовов в момент сбоя:

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:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.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: \SystemRoot\system32\drivers\cmudaxp.sys
Image name: cmudaxp.sys

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

Оцените статью