Дампы windows server 2012

Дампы windows server 2012

Всем привет, как вы знаете по мимо серверных ролей, в Windows Server 2012 R2, можно ставить и свои приложения, которые бизнес использует для клиентов. Если в системе есть какие то проблемы, то они могут приводить к краху системы, примером может быть синий или зеленый экран смерти, который заставляет систему записывать сбой в файл dump. Но, а как быть если синих экранов нет, а приложение вылетает, правильно заставить его создавать такой же дамп памяти, и сегодня я покажу как это делается.

Настройка сбора дампов приложений

И так, как настраивать дампы памяти Windows, я уже описывал, кому интересно посмотрите, чтобы в развернутом виде представлять картину. В Windows есть режим user-mode application crashes, который позволяет с помощью определенного ключа реестра задать локальное хранение таких дампов у приложений. Для начала создайте на диске C:\ в корне, папку с названием CrashDumps.

Открываем реестр Windows Server 2012 R2, через комбинацию Win+R и вводим regedit,

Переходим в ветку (если ее не будет, то нужно ее создать)

Теперь вам нужно создать расширяемый строковый параметр, тип REG_EXPAND_SZ

В нем укажите путь сохранения дампа (user-mode application crashes), вписываем %LOCALAPPDATA%\CrashDumps

Далее создаем ключ DumpType с типом Параметр DWORD (32) со значением 2, это мы задаем полный дамп, если поставить 1, то будет делаться мини дамп.

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

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

Вот примеры дампов для приложения 1С8.3, которые помогали мне решать ошибку с ID 1000.

Обзор параметров файлов сброса памяти для Windows

В этой статье описываются параметры файлов сброса памяти для Windows.

Оригинальная версия продукта: Windows 7 Пакет обновления 1, Windows Server 2012 R2
Исходный номер КБ: 254649

Аннотация

Для записи данных об отладке можно настроить следующие операционные системы:

  • Windows 7
  • Windows Server 2012 R2

Сведения об отладке могут быть записаны в различные форматы файлов (также известные как файлы сброса памяти), когда компьютер неожиданно останавливается из-за ошибки Stop (также известной как синий экран, сбой системы или проверка ошибки). Вы также можете настроить Windows, чтобы не записывать данные отладки в файл сброса памяти.

Windows может создавать любой из следующих типов файлов сброса памяти:

  • Полная свалка памяти
  • Сброс памяти ядра
  • Небольшая свалка памяти (64 КБ)
  • Автоматическая свалка памяти

Полная свалка памяти

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

Если вы выберете параметр «Полная демпинговая память», необходимо иметь файл paging на томе загрузки, достаточный для удержания всей физической оперативной памяти плюс 1 мегабайт (МБ).

Если следующие условия верны, предыдущий файл перезаписан.

  • Возникает вторая проблема.
  • Создается еще один полный файл сброса памяти (или свалка памяти ядра).
  • В Windows 7 файл paging может быть на разделе, который отличается от раздела, на котором установлена операционная система.
  • В Windows 7 не нужно использовать запись реестра DedicatedDumpFile для того, чтобы поместить файл paging в другой раздел.
  • На компьютерах с 32-битной операционной системой и с 2 гигабайтами (ГБ) или более оперативной памяти недоступна опция «Полная демпинговая память». Дополнительные сведения см. в дополнительных сведениях: Укажите, что происходит при неожиданной остановке системы.

Сброс памяти ядра

Сброс памяти ядра записи только памяти ядра. Это ускоряет процесс записи сведений в журнале, когда компьютер неожиданно останавливается. У вас должен быть достаточно большой pagefile, чтобы вместить память ядра. Для 32-битных систем память ядра обычно составляет от 150 до 2 ГБ.

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

  • Память, выделенная на слой абстракции ядра и оборудования (HAL) в Windows 2000 и более поздней версии.
  • Память, выделенная драйверам в режиме ядра и другим программам в режиме ядра.
Читайте также:  Особенности графического пользовательского интерфейса windows

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

Если следующие условия верны, предыдущий файл перезаписывается при проверке перезаписи любого существующего параметра файла.

  • Возникает вторая проблема.
  • Создается еще один файл сброса памяти ядра (или полный файл сброса памяти).

Небольшая свалка памяти

Небольшая свалка памяти записи наименьший набор полезных сведений, которые могут помочь определить, почему компьютер неожиданно остановился. Этот параметр требует файла paging по крайней мере 2 МБ на том загрузки и указывает, что Windows 2000 и более поздней версии создать новый файл каждый раз, когда компьютер неожиданно останавливается. История этих файлов хранится в папке.

Этот тип файла сброса включает следующие сведения:

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

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

Если следующие условия верны, предыдущий файл сохраняется.

  • Возникает вторая проблема.
  • Создается второй небольшой файл сброса памяти.

Каждому дополнительному файлу дается отдельное имя. Дата закодирована в имени файла. Например, Mini022900-01.dmp — это первая свалка памяти, созданная 29 февраля 2000 г. Список всех небольших файлов сброса памяти хранится в %SystemRoot%\Minidump папке.

Настройка типа сброса

Чтобы настроить параметры запуска и восстановления (включая тип сброса), выполните следующие действия.

Так как существует несколько версий Windows, следующие действия могут быть разными на вашем компьютере. Если они есть, см. документацию по продуктам для выполнения этих действий.

  1. Нажмите кнопку Пуск и выберите Панель управления.
  2. Нажмите кнопку Производительность и обслуживание, а затем щелкните System.
  3. На вкладке Advanced щелкните Параметры под запуском и восстановлением.

Чтобы изменения вступили в силу, необходимо перезапустить Windows.

Средства для различных типов сброса

Вы можете загружать полные сбросы памяти и сбросы памяти ядра стандартными символическими отладчиками, такими как I386kd.exe. I386kd.exe включена в cd-диск поддержки Windows 2000.

Загрузка небольших свалок памяти с помощью Dumpchk.exe. Вы также можете Dumpchk.exe проверку правильности создания файла сброса памяти.

Определения тома

Объем загрузки: том, содержащий операционную систему Windows и ее файлы поддержки. Объем загрузки может быть, но не должен быть таким же, как и объем системы.

Том системы. Объем, содержащий файлы, определенные для оборудования, которые необходимо загрузить Windows. Объем системы может быть, но не должен быть таким же, как и объем загрузки. Файлы Boot.ini и Ntbootdd.sys являются примерами файлов, расположенных Ntdetect.com в томе системы.

Значения реестра для запуска и восстановления

Ниже используется значение реестра HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl .

  • CrashDumpEnabled REG_DWORD 0x0 = None
  • CrashDumpEnabled REG_DWORD 0x1 = Полная свалка памяти
  • CrashDumpEnabled REG_DWORD 0x2 = сброс памяти ядра
  • CrashDumpEnabled REG_DWORD 0x3 = Небольшая свалка памяти (64 КБ)
  • CrashDumpEnabled REG_DWORD 0x7 = автоматическая свалка памяти

Дополнительные значения реестра для CrashControl:

AutoReboot REG_DWORD 0x1

DumpFile REG_EXPAND_SZ %SystemRoot%\Memory.dmp

LogEvent REG_DWORD 0x1

MinidumpDir REG_EXPAND_SZ %SystemRoot%\Minidump

Переописывание REG_DWORD 0x1

SendAlert REG_DWORD 0x1

Чтобы изменения вступили в силу, необходимо перезапустить Windows.

Проверка, чтобы убедиться в том, что файл сброса может быть создан

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

Параметры типа демпинга по умолчанию

  • Windows 7 (все выпуски): сброс памяти ядра
  • Windows Server 2012 R2 (Все выпуски): Автоматическая память.dmp

Максимальный размер файла для paging

Максимальный размер файла для paging ограничен следующим образом:

Ограничение x86 x64 IA-64
Максимальный размер файла paging 4 гигабайта (без PAE)
16 терабайт (PAE)
16 терабайт 32 терабайта
Максимальное количество файлов для paging 16 16 16
Общий размер файла для paging 64 гигабайта (без PAE)
256 терабайт (PAE)
256 терабайт 512 терабайт

Техническая поддержка версий Windows на основе x64

Производитель оборудования предоставляет техническую поддержку и помощь для версий Windows на основе x64. Ваш производитель оборудования обеспечивает поддержку, так как x64-версия Windows была включена с вашим оборудованием. Возможно, производитель оборудования настраивал установку Windows с уникальными компонентами. Уникальные компоненты могут включать определенные драйверы устройств или могут включать необязательные параметры для максимальной производительности оборудования. Корпорация Майкрософт предоставит необходимую помощь, если вам потребуется техническая помощь с помощью x64-версии Windows. Однако вам может потребоваться связаться с производителем напрямую. Ваш производитель лучше всего может поддерживать программное обеспечение, установленное производителем на оборудовании.

Анализ дампа памяти в 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?

С помощью 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.

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

Самое главное, на что нужно обратить внимание – это код ошибки, который всегда указывается в шестнадцатеричном значении и имеет вид 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

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

Читайте также:  Как восстановить загрузчик linux mint после установки windows
Оцените статью