Создать файл дампа что это
Команда . dump создает файл аварийного дампа пользовательского режима или режима ядра.
Настройка файлов страниц
Сведения о требованиях к размеру файла страницы для аварийного дампа системы см. в разделе "Поддержка системных аварийных дампов".
Использование NMI
На некоторых компьютерах нельзя использовать клавиатуру для создания файла аварийного дампа. Например, Hewlett-Packard (HP) BladeSystem от Hewlett-Packard Development Company управляется с помощью графического пользовательского интерфейса (GUI) на основе браузера. Клавиатура не подключена к серверу HP BladeSystem.
В таких случаях необходимо создать полный файл аварийного дампа или файл аварийного дампа ядра с помощью параметра NMI, который вызывает NMI на системный процессор.
Чтобы реализовать этот процесс, выполните следующие действия.
Внимательно выполните действия, описанные в этом разделе. Неправильное изменение реестра может привести к серьезным проблемам. Прежде чем изменять его, создайте резервную копию реестра для восстановления на случай возникновения проблем.
Этот раздел реестра не требуется для клиентов под управлением Windows 8 и более поздних версий или серверов, работающих Windows Server 2012 и более поздних версий. Установка этого раздела реестра в более поздних версиях Windows не влияет.
В редакторе реестра найдите следующий подраздел реестра:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
Щелкните элемент CrashControl правой кнопкой мыши, наведите указатель мыши на пункт " Создать" и выберите значение DWORD.
Введите NMICrashDump и нажмите клавишу ВВОД.
Щелкните правой кнопкой мыши NMICrashDump и выберите команду "Изменить".
В поле данных " Значение" введите 1 и нажмите кнопку "ОК".
Поставщики оборудования, такие как HP, IBM и Dell, могут предоставлять функцию автоматического восстановления системы (ASR). Эту функцию следует отключить во время устранения неполадок. Например, если функция HP и Compaq ASR включена в BIOS, отключите эту функцию во время устранения неполадок, чтобы создать полный файл Memory.dmp. Чтобы выполнить конкретные действия, обратитесь к поставщику оборудования.
Включите параметр NMI в BIOS или с помощью веб-интерфейса iLO.
Точные инструкции см. в справочном справочнике по BIOS или обратитесь к поставщику оборудования.
Протестируйте этот метод на сервере с помощью параметра NMI для создания файла дампа. Вы увидите остановку 0x00000080 оборудования.
Если вы хотите запустить NMI в Microsoft Azure с помощью последовательной консоли, см. раздел "Использование последовательной консоли для вызовов SysRq и NMI".
Файл дампа — это моментальный снимок, показывающий выполнявшийся процесс и загруженные для приложения модули в определенный момент времени. Дамп со сведениями о куче также содержит моментальный снимок памяти приложения на этот момент.
Открытие файла дампа с кучей в Visual Studio в чем-то подобно остановке в точке останова во время сеанса отладки. Хотя вы не можете продолжить выполнение, но можете проверить стеки, потоки и значения переменных приложения на момент создания дампа.
В основном дампы используются для отладки проблем на компьютерах, к которым у разработчиков нет доступа. Если вы не можете воспроизвести на своем компьютере аварийное завершение или зависание программы, возникшие на компьютере клиента, вы можете записать файл дампа с его компьютера. Дампы также создаются тест-инженерами, чтобы сохранить данные для дополнительного тестирования.
Отладчик Visual Studio может сохранять файлы дампа для управляемого и машинного кода. Он может отлаживать файлы дампа, созданные Visual Studio или другими приложениями, способными сохранять файлы в формате минидампа.
Открытие файла дампа
В Visual Studio последовательно выберите Файл > Открыть > Файл.
В окне Сводка файла минидампа отображается сводка и сведения о модулях для файла дампа, а также действия, которые можно выполнить.
В разделе Действия:
- чтобы задать расположения для загрузки символов, выберите Set symbol paths (Задать пути к символам);
- чтобы начать отладку, выберите Debug with Managed Only (Отладка только с управляемым кодом), Debug with Native Only (Отладка только с машинным кодом), Debug with Mixed (Отладка со смешанным кодом) или Debug with Managed Memory (Отладка с управляемой памятью).
Параметры режима ядра
В режиме ядра доступны следующие параметры.
/k
Создание дампа только с памятью ядра.
/ка
Создайте дамп с активной памятью ядра и режимом пользователя.
Использование средства NotMyFault
Если вы можете войти во время возникновения проблемы, можно использовать средство Microsoft Sysinternals NotMyFault, выполнив следующие действия:
В командной строке выполните следующую команду:
Эта операция создает файл дампа памяти и ошибку остановки D1.
Комментарии
Эту команду можно использовать в различных ситуациях.
При отладке в режиме реального времени эта команда направляет целевое приложение для создания файла дампа, но целевое приложение не завершается.
При динамической отладке в режиме ядра эта команда направляет целевой компьютер на создание файла дампа, но целевой компьютер не будет завершаться сбоем.
Во время отладки аварийного дампа эта команда создает новый файл аварийного дампа из старого файла. Это полезно при наличии большого файла аварийного дампа и необходимости создать его меньше.
Вы можете контролировать, какой тип файла дампа будет создан:
В режиме ядра для создания полного дампа памятииспользуйте параметр /f . Чтобы создать небольшой дамп памяти, используйте параметр /m (или без параметров). Команда. dump не может создать дамп памяти ядра.
В пользовательском режиме лучше подходит . dump/m [миниоптионс] . Хотя "m" означает "Малый дамп", файлы дампа, созданные с помощью этого миниоптион , могут иметь разный размер. Указав соответствующие миниоптионс , вы можете точно контролировать, какие именно данные включаются. Например, . dump/MA создает дамп с большим объемом информации. Старая команда . dump/fсоздает файл стандартного дампа среднего размера и не может быть настроен.
Невозможно указать, какой процесс будет выгружен. Выполняется дамп всех запущенных процессов.
Параметры /КСК, /КСР, /КСПи /КСТ используются для хранения сведений об исключениях и контексте в файле дампа. Это позволяет выполнить команду . еккср (отображать запись контекста исключения) для этого файла дампа.
В следующем примере создается Малый дамп пользовательского режима, содержащий всю память и сведения об обработке:
Сведения об обработке можно прочитать с помощью команды ! Handle Extension.
Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации) . Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.
Дамп памяти (англ. memory dump; в Unix — core dump) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации) .
Разновидности дампов
• Полный дамп памяти записывает всё содержимое системной памяти при возникновении неустранимой ошибки. Для этого варианта необходимо иметь на загрузочном томе файл подкачки, размер которого равен объему всей физической оперативной памяти плюс 1МБ. По умолчанию полный дамп памяти записывается в файл %SystemRoot%\Memory.dmp. При возникновении новой ошибки и создании нового файла полного дампа памяти (или дампа памяти ядра) предыдущий файл заменяется (перезаписывается) . Параметр Полный дамп памяти недоступен на ПК, на которых установлена 32-битная операционная система и 2 или более гигабайта оперативной памяти. При возникновении новой ошибки и создании нового файла полного дампа памяти предыдущий файл заменяется.
• Дамп памяти ядра записывает только память ядра, благодаря чему процесс записи данных в журнал при внезапной остановке системы протекает быстрее. В зависимости от объема физической памяти ПК в этом случае для файла подкачки требуется от 50 до 800МБ или одна треть физической памяти компьютера на загрузочном томе. По умолчанию дамп памяти ядра записывается в файл %SystemRoot%\Memory.dmp. Этот дамп не включает нераспределенную память или память, выделенную для программ пользовательского режима. Он включает только память, выделенную для ядра и аппаратно-зависимого уровня (HAL) в Windows 2000 и более поздних версиях системы, а также память, выделенную для драйверов режима ядра и других программ режима ядра. В большинстве случаев такой дамп является наиболее предпочтительным вариантом. Он занимает намного меньше места по сравнению с полным дампом памяти, при этом исключая только те сектора памяти, которые, скорее всего, не связаны с ошибкой. При возникновении новой ошибки и создании нового файла дампа памяти ядра предыдущий файл заменяется.
• Малый дамп памяти записывает наименьший объем полезной информации, необходимых для определения причины неполадок. Для создания малого дампа памяти необходимо, чтобы размер файла подкачки составлял как минимум 2МБ на загрузочном томе.
Терминология
Дамп падения (в дальнейшем дамп) – специальный файл, собираемый с помощью библиотеки dbghelp.dll, содержащий в себе информацию о стеке приложения в момент падения. Также содержит в себе информацию о загруженных модулях, хендлах (handles), потоках, участках памяти и т. д. В подавляющем большинстве случаев помогает разобрать стек падения приложения.
Release-версия файла (сокращенно release) – бинарный исполняемый файл, собираемый из исходников проекта. Довольно сильно отличается от отладочной версии (например, наличием оптимизации и отсутствием инициализации данных специальными отладочными значениями) . Существует заблуждение, что release-файлы отлаживать нельзя. На самом деле их отлаживать можно, просто по умолчанию MS Visual Studio не включает поддержку символов в release-версиях. В документации Microsoft сказано, что включение поддержки символов незначительно увеличивает размер бинарных файлов. Однако, по моему личному опыту, размер файла увеличивается (и значительно) . В среднем файл увеличивается на 100 килобайт. На больших проектах это не заметно, но маленькие проекты после этого сильно увеличиваются в размерах.
СОВЕТ
Для включения генерации символов в release-версиях нужно в настройках компилятора выбрать значение «Generate Program Database» для опции «Debug Information Format» (опция компилятора /Zi). Если вы забудете сделать это, файл символов будет построен не полностью и отлаживаться по нему будет невозможно.
PDB-файл (файл символов или просто символы) . При компиляции проекта компоновщик строит исполняемый модуль. Фирмы-производители программного обеспечения уже давно разработали разные методы сохранения информации о строках исходных файлов в модулях символов. В настоящее время наиболее широко (речь идет о Microsoft) используется формат PDB версии 2 (MS Visual Studio 6.0) и PDB 7.0 (MS Visual Studio 7.0+). Данные форматы обеспечивают возможность получения расширенной информации об исполняемых модулях, в том числе возможность разбора стека, получения локальных переменных и т. д.
WinDBG. Один из отладчиков приложений Microsoft. Мое мнение заключается в том, что небольшие системы у себя на компьютере очень удобно отлаживать в Visual Studio, однако как только приложение становится распределенным и сложным, или необходима удаленная отладка в сложных условиях, самое удобное средство – это WinDBG. Повторюсь, что это мое личное мнение. Кроме того, в состав WinDBG входят различные утилиты для облегчения процесса отладки.
Дампы это счтитай резервные копии, самому можно удалять, только оставь три четыре последних на случай восстановления.
Это образ куска памяти, который создается при непредвиденном падении программы. Нужен для разработчиков, для того чтобы понять где произошла ошибка. Создание дамп-файлов можно вообще отключить.
Сбой системы (также известный как "проверка ошибок" или "Остановка ошибки") происходит, когда Windows не удается выполнить правильно. Файл дампа, созданный из этого события, называется системным аварийным дампом.
Файл дампа памяти вручную или полный файл дампа памяти полезен при устранении нескольких проблем, так как процесс записывает запись системной памяти во время сбоя.
Требования и ограничения
- Для отладки файлов дампа, полученных с 64-разрядных компьютеров, необходимо запустить Visual Studio на 64-разрядном компьютере.
- Visual Studio поддерживает отладку файлов дампа управляемых приложений в Linux.
Visual Studio поддерживает отладку файлов дампа, создаваемых приложениями в машинных кодах на устройствах ARM. Он также поддерживает отладку дампов управляемых приложений с устройств ARM, но только в отладчике машинного кода.
Для отладки файлов дампа, полученных в режиме ядра, или использования расширения отладки SOS.dll в Visual Studio загрузите средства отладки для Windows из комплекта разработки драйверов для Windows (WDK).
Visual Studio не поддерживает отладку файлов дампа, сохраненных в старом формате полного дампа в режиме пользователя. Полный дамп в режиме пользователя не то же самое, что и дамп с кучей.
Отладка с использованием файлов дампа оптимизированного кода может сопровождаться ложной информацией. К примеру, встраивание компилятором функций может приводить к непредвиденным стекам вызовов, а другие виды оптимизации могут изменять время существования переменных.
Включение параметра дампа памяти
Для выполнения этой процедуры необходимо войти в систему от имени администратора или члена группы "Администраторы". Если компьютер подключен к сети, параметры политики сети могут помешать выполнению этой процедуры.
Чтобы включить параметр дампа памяти, выполните следующие действия.
В панель управления выберите System и SecuritySystem > .****
Выберите "Дополнительные системные параметры", а затем откройте вкладку "Дополнительно ".
В области "Запуск и восстановление" выберите Параметры.
Убедитесь, что в разделе "**** Запись сведений об отладке" выбран дамп памяти ядра или полный дамп памяти.
Путь к файлу дампа можно изменить, отредактировать поле файла дампа . Другими словами, можно изменить путь с %SystemRoot%\Memory.dmp на локальный диск, на котором достаточно места на диске, например E:\Memory.dmp.
Параметры
Параметры
Представляет один или несколько из следующих параметров.
/a
Создайте дампы для всех процессов (требуется-u).
/b [a]
Дамп пакета в CAB-файле и удаление дампа. Дополнительные сведения включаются, если указан параметр a .
/c
Добавьте комментарий (не поддерживается во всех форматах).
/j
Укажите адрес JIT_DEBUG_INFO.
/o
Перезаписывает существующий файл дампа с тем же именем. Если этот параметр не используется и существует файл с таким же именем, файл дампа не записывается.
/u
Добавьте уникальный идентификатор к имени дампа.
/f [фуллоптионс]
(Режим ядра:) Создает полный дамп памяти.
(Пользовательский режим:) Создает полный дамп пользовательского режима. Дополнительные сведения см. в разделе разновидности User-Mode файлов дампа. Несмотря на их имена, самый крупный файл минидампа фактически содержит больше информации, чем полный дамп пользовательского режима. Например, . dump/МФ или . dump/MA создает больший и полный файл, чем . dump/f. В пользовательском режиме . dump/m [миниоптионс] всегда является предпочтительным для . dump/f.
Чтобы изменить содержимое файла дампа, можно добавить следующий фуллоптионс . параметр учитывает регистр.
фуллоптион | Действие |
---|---|
y | Добавляет сведения о регистрации AVX в файл дампа. |
/m [миниоптионс]
Создает небольшой дамп памяти (в режиме ядра) или малый дамп (в пользовательском режиме). Дополнительные сведения см. в разделе файлы дампа пользовательского режима. Если не указан ни параметр /f , ни параметр /m , по умолчанию используется /m .
В пользовательском режиме с помощью параметра /m можно указать дополнительные миниоптионс , указывающие дополнительные данные, которые будут включаться в дамп. Если миниоптионс не включено, дамп будет включать сведения о модулях, потоках и стеке, но не содержит дополнительных данных. Можно добавить любой из следующих миниоптионс , чтобы изменить содержимое файла дампа. они чувствительны к регистру.
миниоптион | Действие |
---|---|
а | Создает малый дамп со всеми необязательными дополнениями. Параметр/ma эквивалентен/Мффхут — он добавляет полные данные памяти, обрабатывает данные, выгруженные сведения о модулях, основную информацию о памяти и потоковую информацию в Малый дамп. Любой сбой при чтении памяти приводит к завершению создания минидампа. |
A | Параметр/mA эквивалентен/MA, за исключением того, что он игнорирует любые сбои при чтении недоступной памяти и возобновляет создание минидампа. |
f | Добавляет данные о полном объеме памяти в Малый дамп. Будут добавлены все доступные зафиксированные страницы, принадлежащие целевому приложению. |
F | Добавляет все основные сведения о памяти в Малый дамп. При этом в Малый дамп будет добавлен поток, содержащий все основные сведения о памяти, а не только сведения о допустимой памяти. Это позволяет отладчику воссоздать полную структуру виртуальной памяти процесса при отладке минидампа. |
h | Добавляет данные об дескрипторах, связанных с целевым приложением, в Малый дамп. |
u | Добавляет выгруженные сведения о модуле в Малый дамп. он доступен только в Windows Server 2003 и более поздних версиях Windows. |
t | Добавляет дополнительные сведения о потоке в Малый дамп. Это включает время потока, которое может отображаться при отладке минидампа с помощью команды! unextension или. ттиме (отображение времени потока). |
i | Добавляет дополнительную память в Малый дамп. Дополнительная память — это любая память, на которую ссылается указатель в стеке или резервном хранилище, а также небольшая область, окружающая этот адрес. |
p | Добавляет в Малый дамп блок среды процесса (ПЕБ) и данные блока среды потока (ТЕБ). это может быть полезно, если требуется доступ к Windows системным сведениям о процессах и потоках приложения. |
w | Добавляет все зафиксированные закрытые страницы для чтения и записи в Малый дамп. |
d | Добавляет все сегменты данных для чтения и записи в образ исполняемого файла в Малый дамп. |
c | Добавляет разделы кода в изображения. |
r | Удаляет из минидампа эти части стека и памяти хранилища, которые не подходят для повторного создания трассировки стека. Локальные переменные и другие значения типа данных также удаляются. Этот параметр не делает малый дамп меньше (поскольку эти разделы памяти просто обнуляются), но это полезно, если требуется защитить конфиденциальность других приложений. |
R | Удаляет полные пути модулей из минидампа. Будут добавлены только имена модулей. Это полезный вариант, если требуется защитить конфиденциальность структуры каталогов пользователя. |
да | Добавляет сведения о регистрации AVX в файл дампа. |
Пути поиска для EXE-файлов
Visual Studio автоматически ищет EXE-файлы, не включенные в файл дампа, в следующих расположениях.
- В папке, содержащей файл дампа.
- В пути к модулю, указанному файлом дампа (это путь к модулю на компьютере, на котором был собран дамп).
- В путях к символам, указанных в разделе Инструменты (или Отладка) >Параметры >Отладка >Символы. Можно также открыть страницу Символы из панели Действия окна Сводка файла дампа. На этой странице можно добавить другие расположения для поиска.
Поиск файлов EXE, PDB и исходных файлов
Для использования всех возможностей отладки в файле дампа Visual Studio требуются следующие файлы.
- EXE-файл, для которого был создан дамп, и другие двоичные файлы (DLL и т. п.), использовавшиеся процессом дампа.
- Файлы символов ( .pdb) для EXE-файлов и других двоичных файлов.
- EXE- и PDB-файлы, в точности соответствующие версии и сборке файлов, использовавшихся при создании дампа.
- Исходные файлы для соответствующих модулей. Если не удается найти исходные файлы, можно использовать дизассемблирование модулей.
Если в дампе содержатся данные кучи, Visual Studio может обойтись без двоичных файлов для некоторых модулей, но необходимы двоичные файлы для достаточного количества модулей, чтобы создавать допустимые стеки вызовов.
Советы для создания дампов памяти
При сбое и перезапуске компьютера содержимое физической ОЗУ записывается в файл подкачки, расположенный в разделе, в котором установлена операционная система.
В зависимости от скорости жесткого диска, на котором установлен Windows, дамп памяти объемом более 2 гигабайт (ГБ) может занять много времени. Даже в лучшем случае, если файл дампа настроен для размещения на другом локальном жестком диске, значительный объем данных будет считываться и записываться на жесткие диски. Этот процесс чтения и записи может привести к длительному сбою сервера.
Используйте этот метод для создания полных файлов дампа памяти с осторожностью. В идеале это следует делать только в том случае, если инженер служба поддержки Майкрософт явным образом. Любая отладка файла дампа ядра или полной памяти должна быть последним средством после полного исчерпания всех стандартных методов устранения неполадок.
Дополнительные сведения
Описание файлов дампа режима ядра и объяснение их использования см. в разделе файлы дампа режима ядра. Описание файлов дампа пользовательского режима и объяснение их использования см. в разделе файлы дампа пользовательского режима.
Файлы дампа, с кучами или без куч
В файлах дампа могут содержаться сведения о куче, но могут и отсутствовать.
Файл дампа со сведениями о куче содержит снимок памяти приложения, включая значения переменных на момент создания дампа. Visual Studio также сохраняет в файле дампа с кучей двоичные файлы загруженных модулей машинного кода, что может значительно упростить отладку. Visual Studio может загружать символы из файла дампа с кучей, даже если не удается найти двоичный файл приложения.
Файлы дампа без сведений о куче намного меньше, чем дампы с кучами, но отладчику нужно будет загрузить двоичные файлы приложения, чтобы найти сведения о символах. Загруженные двоичные файлы должны точно соответствовать тем, которые выполнялись во время создания дампа. В файлах дампа без сведений о куче хранятся только значения переменных стека.
Использование страниц No Binary, No Symbols или No Source Found
Если Visual Studio не может найти файлы, необходимые для отладки модуля в дампе, отображается соответствующая страница No Binary Found (Двоичные файлы не найдены), No Symbols Found (Символы не найдены) или No Source Found (Исходные файлы не найдены). На этих страницах содержатся подробные сведения о причине проблемы, а также ссылки на действия, которые могут помочь найти файлы. См. статью Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.
Создание файла дампа памяти вручную
Создание файла дампа
При отладке процесса в Visual Studio можно сохранить дамп, когда отладчик останавливает выполнение при возникновении исключения или в точке останова.
Если включена JIT-отладка, можно подключить отладчик Visual Studio к аварийному процессу, который выполняется вне Visual Studio, а затем сохранить файл дампа из отладчика. См. раздел Подключение к выполняющимся процессам.
Сохранение файла дампа
Когда во время отладки происходит остановка (при возникновении ошибки или в точке останова), выберите Отладка > Сохранить дамп как.
В диалоговом окне Сохранить дамп как в разделе Тип файла можно выбрать Минидамп или Минидамп с кучей (значение по умолчанию).
Укажите путь сохранения и выберите имя файла дампа, а затем нажмите Сохранить.
Вы можете создавать файлы дампа с помощью любой программы, которая поддерживает формат минидампов Windows. Такой программой, например, может быть программа командной строки Procdump из Windows Sysinternals, которая может создавать файлы аварийного дампа процесса на основе триггеров или по требованию. Дополнительные сведения об использовании других средств для создания файлов дампа см. в разделе Требования и ограничения.
Читайте также: