Дамп памяти процесса

Содержание

Создание ядра или полного аварийного дампа – Windows Client Management

Дамп памяти процесса

  • 8/28/2019
  • Чтение занимает 3 мин
    • D

Системное сбой (проверка ошибок или ошибки остановки) возникает, если Windows не удается правильно запустить windows.

A system crash (also known as a “bug check” or a “Stop error”) occurs when Windows can't run correctly. Файл дампа, созданный из этого события, называется диском системы.

The dump file that is produced from this event is called a system crash dump.

При устранении нескольких неполадок можно использовать вручную или полностью файл дампа памяти, так как процесс регистрирует запись памяти во время сбоя.A manual kernel or complete memory dump file is useful when you troubleshoot several issues because the process captures a record of system memory at the time of a crash.

Настройка файлов страницыSet up page files

См. раздел “Поддержка по сбоям” для требования к размеру файлов, требованиям к которым применяется система.See Support for system crash dumps for the page file size requirement for system crash dump.

Включить параметр реземых резлосов памятиEnable memory dump setting

Для выполнения этой процедуры необходимо войти в службу как администратор или член группы “Администраторы”.

You must be logged on as an administrator or a member of the Administrators group to complete this procedure. Если компьютер подключен к сети, параметры политики сети могут помешать вам выполнить эту процедуру.

If your computer is connected to a network, network policy settings may prevent you from completing this procedure.

Чтобы включить параметр автоматизации памяти, выполните следующие действия:To enable memory dump setting, follow these steps:
  1. На панели управления выберите“Система и >система безопасности”.In Control Panel, select System and Security >System.

  2. Выберите “Дополнительные параметры системы” и перейдите на вкладку “Дополнительно”.Select Advanced system settings, and then select the Advanced tab.

  3. В области запуска и восстановления выберите“Параметры”.In the Startup and Recovery area, select Settings.

  4. Убедитесь, что в разделе “Сведения отладки” выбран опасной памяти или завершенный помех памяти.Complete memory dumpMake sure that Kernel memory dump or Complete memory dump is selected under Writing Debugging Information.

  5. Перезагрузите компьютер.Restart the computer.

Примечание

Путь к файлу dump можно изменить, отредактировав поле Dump.You can change the dump file path by edit the Dump file field.

Другими словами, вы можете изменить путь с адреса %SystemRoot%\Memory.dmp, указывая на локальный диск, например E:\Memory.dmp.In other words, you can change the path from %SystemRoot%\Memory.

dmp to point to a local drive that has enough disk space, such as E:\Memory.dmp.

Советы по генеральной сборке дампа памятиTips to generate memory dumps

При сбое компьютера сбоя компьютера в файл размещения, расположенном на его части, сохраняется в файле страницы, на котором установлена операционная система.When the computer crashes and restarts, the contents of physical RAM are written to the paging file that is located on the partition on which the operating system is installed.

В зависимости от скорости жесткого диска, на котором установлена Windows, память юридические (ГБ) памяти могут занимать много времени.Depending on the speed of the hard disk on which Windows is installed, dumping more than 2 gigabytes (GB) of memory may take a long time.

Даже в случаях, если файл dump просматривается на другом жестком диске, существует значительное количество данных для чтения и записи на жесткие диски.Even in a best case scenario, if the dump file is configured to reside on another local hard drive, a significant amount of data will be read and written to the hard disks.

Это может привести к недоступности продления сервера.This can cause a prolonged server outage.

Примечание

Используйте этот метод для генерации полных файлов потери памяти.Use this method to generate complete memory dump files with caution. Идеально, сделать это только в случае явного запроса технической поддержки Майкрософт.

Ideally, you should do this only when you are explicitly requested to by the Microsoft Support engineer. После завершения всех стандартных способов устранения неполадок необходимо использовать последнюю сортировку, чтобы полностью сортировать их.

Any kernel or complete memory dump file debugging should be the last resort after all standard troubleshooting methods have been completely exhausted.

Использование инструмента NotMyFaultUse the NotMyFault tool

Если во время возникновения проблемы вы можете войти, воспользуйтесь средством Microsoft Sysinternals NotMyFault.If you can log on while the problem is occurring, you can use the Microsoft Sysinternals NotMyFault tool. Для этого выполните следующие действия:To do this, follow these steps:

  1. Скачайте средство NotMyFault.Download the NotMyFault tool.

  2. Нажмите кнопку “Пуск” и выберите командную строку.Select Start, and then select Command Prompt.

  3. В командной строке выполните следующую команду:At the command line, run the following command:

    notMyfault.exe /crash

Примечание

Это действие создает файл дампа памяти и ошибку D1.This operation generates a memory dump file and a D1 Stop error.

Использование NMIUse NMI

На некоторых компьютерах нельзя создавать файл дискового происходящего сбоя с помощью клавиатуры.On some computers, you cannot use keyboard to generate a crash dump file.

Например, управление Hewlett-Packard (HP) BladeSystem от компании Hewlett-Packard Development осуществляется через графический пользовательский интерфейс пользователя (GUI).

For example, Hewlett-Packard (HP) BladeSystem servers from the Hewlett-Packard Development Company are managed through a browser-based graphical user interface (GUI). Клавиатура не прикреплена к серверу HP BladeSystem.A keyboard is not attached to the HP BladeSystem server.

В таких случаях необходимо создать полную дисковую работу или сбой-файла с помощью параметра NMI в процессоре без маских прерываний (NMI), который приводит к тому, что приводит к сбою NMI в процессоре.In these cases, you must generate a complete crash dump file or a kernel crash dump file by using the Non-Maskable Interrupt (NMI) switch that causes an NMI on the system processor.

Для этого выполните следующие действия:To do this, follow these steps:

Важно!

Будьте внимательно выполнять действия, описанные в этом разделе.Follow the steps in this section carefully. Неправильное изменение реестра может привести к серьезным проблемам.

Serious problems might occur if you modify the registry incorrectly. Прежде чем вносить изменения, создайте резервную копию реестра для восстановления на случай неполадок.

Before you modify it, back up the registry for restoration in case problems occur.

  1. В редакторе реестра найдите следующий подраздел:In Registry Editor, locate the following registry subkey:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControlHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

  2. Щелкните правой кнопкой мыши CrashControl, наведите указатель мыши на пункт “Создать” и выберите команду DWORD.Right-click CrashControl, point to New, and then click DWORD Value.

  3. Введите NMICrashDump и нажмите клавишу ВВОД.Type NMICrashDump, and then press Enter.

  4. Щелкните правой кнопкой мыши NMICrashDumpи выберите “Изменить”.Right-click NMICrashDump, and then select Modify.

  5. В поле “Значение” введите 1, азатем нажмите кнопку “ОК”.In the Value data box, type 1, and then select OK.

  6. Перезагрузите компьютер.Restart the computer.

  7. Поставщики оборудования, например HP, IBM и Dell, могут предоставлять функцию автоматического восстановления системы (ASR).Hardware vendors, such as HP, IBM, and Dell, may provide an Automatic System Recovery (ASR) feature. Эту функцию следует отключить во время устранения неполадок.You should disable this feature during troubleshooting.

    Например, если в бизнес-аналитике включена функция HP and Compaq ASR, отключите эту функцию при устранении неполадок, возникающей при устранении неполадок, по устранению неполадок.For example, if the HP and Compaq ASR feature is enabled in the BIOS, disable this feature while you troubleshoot to generate a complete Memory.dmp file.

    Для получения точных действий обратитесь к поставщику оборудования.For the exact steps, contact your hardware vendor.

  8. Включите NMI в бизнес-данных или с помощью интегрированного веб-интерфейса интегрированного освещения (iLO).Enable the NMI switch in the BIOS or by using the Integrated Lights Out (iLO) Web interface.

    Примечание

    Дополнительные сведения см. в руководстве по эксплуатации бизнес-аналитики или обратитесь к поставщику оборудования.For the exact steps, see the BIOS reference manual or contact your hardware vendor.

  9. Проверьте этот метод на сервере, используя переключатель NMI для генерального дискового файла.Test this method on the server by using the NMI switch to generate a dump file. Вы увидите аппаратную вредоносную программу STOP 0x00008080.You will see a STOP 0x00000080 hardware malfunction.

Сведения о запуске NMI в Microsoft Azure с помощью серийной консоли см. в статье “Использование серийной консоли для звонков SysRq и NMI”.If you want to run NMI in Microsoft Azure using Serial Console, see Use Serial Console for SysRq and NMI calls.

Использование клавиатурыUse the keyboard

Принудитствовать сбою системы с помощью клавиатурыForcing a System Crash from the Keyboard

Работа отладкиUse Debugger

Принудит, касающийся системы от отладкиForcing a System Crash from the Debugger

Отправить и просмотреть отзыв по

Этот продукт Эта страница Просмотреть все отзывы по странице

Источник: https://docs.microsoft.com/ru-ru/windows/client-management/generate-kernel-or-complete-crash-dump

Дамп памяти в Windows – зачем нужен и как его включить

Дамп памяти процесса

С критическими ошибками «оконной» ОС знаком практически каждый её пользователь, и появляющиеся при этом синие экраны смерти (BSoD) обычно ничего хорошего не предвещают. Они могут быть спровоцированы программными или аппаратными причинами, и поскольку источник неприятности не всегда очевиден, решение начинается с диагностических мероприятий.

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

Для чего нужен дамп памяти Windows

Содержимое оперативной памяти и материалы, касающиеся сбоя, могут писаться в файл подкачки, при следующем старте операционки создаётся аварийный дамп с информацией об отладке, сформированной на базе сохранённых данных (ОС может создавать memory dump и минуя файл подкачки). В журнале событий будет сделана запись об ошибке, если данная опция настроена.

Вывод участка дампа 32-х битной ОС Windows с помощью программы Debug.exe

Тип записываемого дампа может задаваться в свойствах ОС, поддерживаются варианты:

  1. Малый дамп памяти. Включает немного сведений, в частности это код ошибки с параметрами, список установленных в Виндовс драйверов и т. д., но этой информации бывает достаточно для выявления источника проблемы. Элемент, как правило, будет записан в каталоге C:\Windows\Minidump.
  2. Дамп памяти ядра. Выполняется сохранение сведений оперативной памяти, связанных только с режимом ядра, исключая информацию, не указывающую на источник появления сбоя.
  3. Полный дамп системы. Содержимым является вся память операционки, что может создать проблемы при создании снимка, если объём ОЗУ составляет более 4Гб. Обычно пишется в файл C:\Windows\MEMORY.DMP.
  4. Автоматический дамп памяти (стал доступным с восьмой версии Виндовс). Содержит те же записи, что и memory dump ядра, при этом отличается способом управления системой размером файла подкачки.
  5. Активный дамп памяти (представлен в «Десятке»). Содержит только активную память хоста из режимов ядра и пользователя* (возможность была изначально реализована для серверов, чтобы при диагностике в дамп не попадали виртуальные машины).

*Дамп пользовательского режима представляет собой дамп определённого процесса. Так, содержимым может являться полная память процесса или фрагмент, список, стек, состояние потоков, списки библиотек, состояние потоков, дескрипторы объектов ядра.

Чаще всего аварийный дамп памяти Windows 7, 8, 10 используется в целях диагностики и позволяет выяснить, как исправить критическую ошибку. Проанализировав содержимое, можно понять, что стало причиной неполадки, и приступить к её устранению.

ВАЖНО. При отказе диска или возникновении BSoD на первой стадии запуска системы аварийный дамп создан не будет.

Чтобы активировать автоматическое сохранение memory dump в Виндовс, нужно сделать следующее:

  1. Переходим к свойствам системы любым удобным способом. Например, жмём правой кнопкой мыши по значку «Мой компьютер» (или «Этот компьютер» на «Десятке»). Выбираем «Свойства», затем в перечне опций в левой колонке жмём «Дополнительные параметры системы». Альтернативный вариант – использование Панели управления, где следует перейти в раздел «Система» (то же окно появится при использовании клавиш Win+Pause), а затем в «Дополнительные параметры системы». В Виндовс 10 также можно применить оснастку «Параметры»(Win+I). В окне нужно перейти к разделу «Система – «О системе» – «Сведения о системе» и далее в дополнительные параметры ОС.
  2. В открывшемся окне на вкладке «Дополнительно» в области «Загрузка и восстановление» жмём «Параметры».
  3. В итоге манипуляций откроется следующее окно, где следует выбрать тип записи отладочной информации, задать параметры, проставив в нужных пунктах галочки, после чего нажать кнопку «ОК».

Как настроить дамп памяти в 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:

  • идём на страницу загрузки SDK (в зависимости от версии ОС выбираем нужный пакет, ссылки выше), скачиваем инсталлятор;
  • после скачивания файла запускаем процесс инсталляции;
  • выбираем первый вариант установки – на этот компьютер (второй предполагает загрузку для установки пакета на другие компьютеры);
  • оставляем путь установки по умолчанию или меняем, если это необходимо;
  • соглашаемся с условиями лицензионного соглашения;
  • можно поставить весь пакет или выбрать в списке только отладчик Debagging Tools for Windows.

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

Перед анализом memory dump необходимо выполнить некоторые настройки. Для работ с софтом понадобится пакет символов отладки Debugging Symbols, загруженный с учётом версии и разрядности системы.

Можно настроить извлечение утилитой символов из интернета, что безопасно, поскольку используется официальный ресурс компании Майкрософт.

Ассоциирование файлов .dmp с WinDbg

Для того чтобы объекты при нажатии на них открывались посредством утилиты:

  1. В консоли командной строки, запущенной от имени администратора (например, через меню Пуск) выполняем команды (зависимо от разрядности ОС):

    cd C:\Progran Files (x86)\Windows Kits\10\Debuggers\x64
    exe –IA

  2. Или (для 32-разрядной Виндовс):

    cd C:\Progran Files (x86)\Windows Kits\10\Debuggers\x86
    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-накопителе, это могут быть программы для работы с твердотельными дисками.

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

Также причиной отключения дампа памяти могут быть различные программы очистки компьютера и оптимизации системы.

Источник: https://nastroyvse.ru/opersys/win/kak-vklyuchit-damp-pamyati-v-windows-i-chem-ego-prochitat.html

Аварийный дамп памяти Windows

Дамп памяти процесса

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

Дамп памяти (memory dump) — содержимое рабочей памяти процесса, ядра или всей операционной системы, включающий, помимо рабочих областей, дополнительную информацию о состоянии регистров процессора, содержимом стека и прочие служебные структуры.

Для чего нам может потребоваться данное содержимое, то есть дамп памяти Windows? Пожалуй, наиболее часто дамп памяти используется для изучения причин возникновения системного сбоя (BSOD), который явился причиной полного останова операционной системы.

В дополнение к этому, состояние памяти может использоваться и для других целей.

Немаловажен и тот факт, что дамп памяти – это буквально единственный способ получения информации о любом сбое! А снятие (получение) дампа памяти системы – это, фактически, единственный точный метод получения мгновенного отпечатка (копии) содержимого физической памяти системы.

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

А единственный способ сделать это – создать полный аварийный дамп памяти.

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

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

Теоретически, статичность (неизменность) “отпечатка” памяти объясняется тем, что когда вызывается функция KeBugCheckEx, выводящая на экран информацию о сбое и стартующая процесс создания дампа памяти, система уже полностью остановлена и содержимое физической памяти записано в блоки, занимаемые на диске файлом подкачки, после чего, уже в процессе последующей загрузки операционной системы оно сбрасывается в файл на системном носителе. Ну а практически один раз наблюдал ситуацию, когда сбоящая материнская плата не давала сохранить дамп памяти: а) подвисая в процессе работы логики сохранения дампа (процесс не доходил до 100%), б) повреждая файл дампа памяти (отладчик ругался на структуры), в) записывая файлы дампов memory.dmp нулевой длины. Поэтому, не смотря на то, что система в момент создания дампа памяти уже полностью остановлена, и работает только аварийный код, сбойное железо может вносить свои коррективы в любую без исключения логику на любом этапе функционирования.
Традиционно, на начальном этапе для сохранения дампа памяти Windows используются блоки диска, выделенные файлу подкачки (pagefile). Затем, после возникновения синего экрана и перезагрузки, данные перемещаются в отдельный файл, а затем файл переименовывается по шаблону, зависящему от типа дампа. Однако, начиная с версии Windows Vista, подобное положение вещей возможно изменить, теперь пользователю дана возможность сохранять выделенный дамп без участия файла подкачки, помещая информацию о сбое во временный файл. Сделано это для того, чтобы исключить ошибки конфигурации, связанные с неправильной настройкой размера и положения файла подкачки, что зачастую приводило к проблемам в процессе сохранения дампа памяти.
Давайте посмотрим, какие же разновидности дампов позволяет нам создавать операционная система Windows:

  • Дамп памяти процесса (приложения);
  • Дамп памяти ядра;
  • Полный дамп памяти (дамп доступной части физической памяти системы).

Все аварийные дампы можно разделить на две основных категории:

  • Аварийные дампы с информацией о возникшем исключении (crash dump). Обычно создаются отладчиком в автоматическом режиме, когда в приложении/ядре возникает [интересующее нас] исключение, в итоге становящееся необрабатываемым (unhandled exception). В этом случае информация об исключении записывается в дамп, что упрощает определение типа исключения и места возникновения при последующем анализе отладчиком в автоматическом/ручном режимах.
  • Аварийные дампы без информации об исключении (hang dump). Обычно создаются пользователем в ручную, когда необходимо создать просто “мгновенный снимок” процесса после наступления какого-либо события (подвис, начал грузить ЦП), для последующего анализа. Анализ этот подразумевает не определение причины исключения (поскольку никакого исключения и не возникало), а анализ совершенно другого рода, например изучение структур данных процесса и прочее.

Конфигурация дампа памяти ядра

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

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

  1. Нажать правой кнопкой мыши на значке “Мой Компьютер” – “Свойства” – “Дополнительные параметры системы” – “Дополнительно”.
  2. Кнопка “Пуск” – “Панель управления” – “Система” – “Дополнительные параметры системы” – “Дополнительно”.
  3. Сочетание клавиш “Windows” + “Pause” – “Дополнительные параметры системы” – “Дополнительно”.
  4. Выполнить в командной строке (cmd):
    control system.cpl,,3
  5. Выполнить в командной строке (cmd):
    SystemPropertiesAdvanced

Результатом описанных действий является открытие окна “Свойства системы” и выбор вкладки “Дополнительно”:

После этого в разделе “Загрузка и восстановление” мы нажимаем выбираем “Параметры” и тем самым открываем новое окно под названием “Загрузка и восстановление”:

Все параметры аварийного дампа сгруппированы в блоке параметров под названием “Отказ системы”. В этом блоке мы можем задать следующие параметры:

  1. Записать события в системный журнал.
  2. Выполнить автоматическую перезагрузку.
  3. Запись отладочной информации.
  4. Файл дампа.
  5. Заменять существующий файл дампа.

Как видите, многие параметры из списка достаточно тривиальны и просты в понимании. Однако, я бы хотел подробнее остановиться на параметре “Файл дампа”. Параметр представлен в виде ниспадающего списка, и имеет четыре возможных значения:

Малый дамп памяти (Small memory dump)

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

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

Размещение: %SystemRoot%\Minidump\MMDDYY-XXXXX-NN.dmp. Где MMDDYY – месяц, день и год соответственно, NN – порядковый номер дампа.

Объем: Размер зависит от разрядности операционной системы: требуется всего-то 128 килобайт для 32-разрядной и 256 килобайт для 64-разрядной ОС в файле подкачки (либо в файле, указанном в DedicatedDumpFile).

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

Дамп памяти ядра (Kernel memory dump)

Данный тип дампа содержит копию всей памяти ядра на момент сбоя.
Состав:

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

В дампе памяти ядра отсутствуют нераспределенные страницы памяти и страницы пользовательского режима. Согласитесь, ведь маловероятно, что страницы процесса пользовательского режима будут нам интересны при системном сбое (BugCheck), поскольку обычно системный сбой инициируется кодом режима ядра.

Размещение: %SystemRoot%\MEMORY.DMP. Предыдущий дамп перезаписывается.
Объем: Варьируется в зависимости от размера адресного пространства ядра, выделенной операционной системой и количества драйверов режима ядра.

Обычно, требуется около трети объема физической памяти в файле подкачки (либо в файле, указанном в DedicatedDumpFile). Может варьироваться.

Полный дамп памяти (Complete memory dump)

Полный дамп памяти содержит копию всей физической памяти (ОЗУ, RAM) в момент сбоя. Соответственно, в файл попадает и все содержимое памяти системы. Это одновременно преимущество и главный недостаток, поскольку размер его на некоторых серверах с большим объемом ОЗУ может оказаться существенным.
Состав:

  • Все страницы “видимой” физической памяти. Это практически вся память системы, за исключением областей, используемых аппаратной частью: BIOS, пространство PCI и прч.
  • Данные процессов, которые выполнялись в системе в момент сбоя.
  • Страницы физической памяти, которые не отображены на виртуальное адресное пространство, но которые могут помочь в изучении причин сбоя.

В полный дамп памяти не включаются, по-умолчанию, области физической памяти, используемой BIOS.
Размещение: %SystemRoot%\MEMORY.DMP. Предыдущий дамп перезаписывается.

Объем: В файле подкачки (либо в файле, указанном в DedicatedDumpFile) требуется объем, равный размеру физической памяти + 257 мегабайт (эти 257 Мб делятся на некий заголовок + данные драйверов).

На деле же, в некоторых ОС, нижний порог файла подкачки можно выставить точно в значение размера физической памяти.

Автоматический дамп памяти (Automatic memory dump)

Начиная с Windows 8/Windows Server 2012, в систему введен новый тип дампа под названием “Автоматический дамп памяти”, который устанавливается типом по умолчанию. В этом случае система сама решает, какой дамп памяти записать в ситуации того или иного сбоя. Причем логика выбора зависит от многих критериев, в том числе от частоты “падения” операционной системы.

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

Раздел реестра, который определяет параметры аварийного дампа:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl

Параметры:

ПараметрТипОписание
AutoRebootREG_DWORDВключение/отключение автоматической перезагрузки при возникновении BSOD.
CrashDumpEnabledREG_DWORDВид создаваемого дампа.

  • 0 – не создавать дамп памяти;
  • 1 – полный дамп памяти;
  • 2 – дамп памяти ядра;
  • 3 – малый дамп памяти;
DumpFileREG_EXPAND_SZПуть и название дампа памяти ядра и полного дампа памяти.
DumpFiltersREG_MULTI_SZДрайвер-фильтр в стеке драйверов дампа памяти. Позволяет добавлять новый функционал на этапе создания аварийных дампов. Например, шифрование содержимого дампа. Изменять значение не рекомендуется.
LogEventREG_DWORDЗапись события в системный журнал.
MinidumpDirREG_EZPAND_SZПуть и название малого дампа памяти.
MinidumpsCountREG_DWORDМаксимальное количество малых дампов памяти. При превышении начинают затираться более старые версии.
OverwriteREG_DWORDЗаменять существующий файл дампа. Только для дампа памяти ядра и полного дампа памяти.
IgnorePagefileSizeREG_DWORDИгнорирует стандартный файл подкачки как место для временного (промежуточного) хранения дампа памяти. Указывает на необходимость записать дамп памяти в отдельный файл. Используется совместно с опцией DedicatedDumpFile.
DedicatedDumpFileREG_EZPAND_SZПуть и название временного альтернативного файла для записи дампа памяти. Во втором проходе данные все равно будут перемещены в DumpFile/MinidumpDir.

Ручное создание дампа памяти

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

Но ведь в реальной жизни, помимо падения операционной системы, существуют ситуации, когда необходимо получить дамп памяти системы в конкретный момент времени. Как быть в этом случае? Существуют методы получения мгновенной копии всей физической памяти, например с помощью команды .

dump в отладчиках WinDbg/LiveKD. LiveKD – программа, позволяющая запускать отладчик ядра Kd в функционирующей системе в локальном режиме. В отладчике WinDbg тоже имеется подобная возможность.

Однако метод получения дампа “на лету” не точен, поскольку дамп создается в этом случае “противоречивый”, так как для создания дампа требуется время, а в случае использования отладчика режима ядра система продолжает работать и вносить изменения в страницы памяти.

Файлы настроек реестра

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

Скачать: Малый дамп памяти

Скачать: Дамп памяти ядра

Скачать: Полный дамп памяти

Источник: http://datadump.ru/windows-crash-dump/

Дамп памяти для программы TSLab – Документация TSLab 2.1 – Documentation

Дамп памяти процесса

Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека.

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

Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.

Wikipedia

Создание дампа памяти

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

Чтобы получить дамп процесса:

  1. Нажмите Ctrl+Alt+Delete на клавиатуре.
  2. Выберите Диспетчер задач
  3. Для Windows 8, 8.1, 10 или серверная система нажмите Подробнее.
  4. Если работа идет на 32-битной Windows и запущена 32-битная TSLab или на 64-битной Windows и запущена 64-битная TSLab, правой кнопкой мыши нажмите на TSlabApp.exe и из контекстного меню выбрать Create Dump File (Создать файл дампа памяти).
  5. Дождитесь сообщения об успешном создании файла.
  6. Перейдите в папку с созданным дампом 

Если выполняется 32-битная TSLab на 64-битной Windows, то нужно запустить 32-битный Диспетчер задач.

Для этого нажать кнопку Пуск внизу слева.

В поле ввода “Найти программы и файлы” вбить (скопировать) строку C:\Windows\SysWOW64\taskmgr.exe и нажать Enter.

Должен запустится 32-битный Диспетчер задач. Чтобы убедиться что запущен 32-битный Диспетчер задач, нужно перейти на вкладку Процессы и найти строку с taskmgr.exe*32.
В случае если запущен 64-битный Диспетчер задач, то строка будет taskmgr.exe.

Далее выбрать строку с TSLabApp.exe*32 и в контектсном меню выбрать Создать файл дамп памяти.

Так как размер полученного файла дампа будет большой, то дамп нужно запаковать каким-либо архиватором

Если на компьютере нет архиваторов(правой кнопкой мыши на файле, в контекстном меню – отправить zip), например 7Zip (http://www.7-zip.org/), и выложить на любой файлообменник, например http://disk.yandex.ru http://files.mail.ru/
Ниже приведен алгоритм создания дампа памяти при Падении программы и как альтернативный способ создания дампа памяти при зависаниях.

Зачем нужен дамп и как его сделать

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

или просто делается запись в лог-файл и продолжается выполнение программы или, для тяжелых ошибок, выводится диалог и программа аварийно завершается.

В случае ошибки в неуправляемом коде .NET Framework в большинстве случаев перехватывает и превращает их в управляемое исключение, которое потом перехватывает программа.

Но при определенных ошибкахпрограмма просто аварийно завершается без передачи управления в программу. Например:

В этом случае ни о какой записи в лог и речи не идет. Для выяснения причин где и из-за чего произошла ошибка поможет дамп.

Также дамп памяти необхоим в случае, когда программа “зависает”, т.е. перестает реагировать на действия пользователя. При этом в логе программы не будет создана запись о возникшей ошибке. 

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

Создание дампа при помощи программы ProcDump 

К сожалению по логам и тем более по скриншоту в данных ситуациях невозможно понять причину ошибки. Нужно делать дамп и анализировать его.

Раньше, считали, что в таких случаях единственный вариант, это договариваться с пользователем о доступе на компьютер, т.к.

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

Решение нашлось в виде относительно новой, бесплатной программы ProcDump от известного автора Русиновича. Она позволяет создавать дамп при определенных условиях, которые задаются в командной строке.

Разберем, что необходимо сделать для получения дампа, в случаях зависания и краха программы.

Откройте окно командную строку Windows в режиме Администратора. Для запуска с правами администратора, необходимо сделать следующее:
Пуск — Все программы — Служебные
. Найдите ярлык Командная строка. Нажмите на нем правую клавишу мыши и выбирите Запуск от имени администратора.

С командной строки перейти в папку где распакован procdump
Переход осуществляется с помощью команды cd

Запустить программу procdump. При первом запуске она выводит окно с пользовательским соглашением, которое надо принять.
Далее, шаги для случая зависания и краха отличаются.

Случай зависания, это более простой случай. В момент когда программа зависла надо запустить procdump со следующими параметрами:
C:\utils>procdump -ma TSLabApp.exe crash.dmp
После этого в текущей папке создастся файл crash.dmp.

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

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

В этом случае перед этим нужно запустить программу procdump со следующими параметрами:

C:\utils>procdump -e -w -ma TSLabApp.exe crash.dmp

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

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

Источник: https://docs.tslab.pro/pages/viewpage.action?pageId=10748581

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.