Создать файл дампа что это такое

Обновлено: 22.11.2024

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

Открытие файла дампа с кучей в Visual Studio похоже на остановку в точке останова в сеансе отладки. Хотя вы не можете продолжить выполнение, вы можете проверить стеки, потоки и значения переменных приложения во время создания дампа.

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

Отладчик Visual Studio может сохранять файлы дампа для управляемого или машинного кода. Он может отлаживать файлы дампа, созданные Visual Studio или другими приложениями, сохраняющими файлы в формате minidump.

Требования и ограничения

  • Для отладки файлов дампа с 64-разрядных компьютеров Visual Studio должна быть запущена на 64-разрядном компьютере.
  • Visual Studio может отлаживать файлы дампа управляемых приложений из ОС Linux.

Visual Studio может отлаживать файлы дампа нативных приложений с устройств ARM. Он также может отлаживать дампы управляемых приложений с устройств ARM, но только в собственном отладчике.

Для отладки файлов дампа режима ядра или использования расширения отладки SOS.dll в Visual Studio загрузите инструменты отладки для Windows в комплекте драйверов Windows (WDK).

Visual Studio не может отлаживать файлы дампа, сохраненные в старом формате полного дампа пользовательского режима. Полный дамп пользовательского режима — это не то же самое, что дамп с кучей.

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

Дамп файлов с кучами или без них

Файлы дампа могут содержать или не содержать информацию о куче.

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

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

Создать файл дампа

Во время отладки процесса в Visual Studio вы можете сохранить дамп, когда отладчик остановился на исключении или в точке останова.

Если включена своевременная отладка, вы можете подключить отладчик Visual Studio к аварийному процессу за пределами Visual Studio, а затем сохранить файл дампа из отладчика. См. раздел Присоединение к запущенным процессам.

Чтобы сохранить файл дампа:

При остановке из-за ошибки или точки останова во время отладки выберите «Отладка» > «Сохранить дамп как».

В диалоговом окне "Сохранить дамп как" в разделе "Тип файла" выберите Минидамп или Минидамп с кучей (по умолчанию).

Перейдите к пути и выберите имя для файла дампа, а затем нажмите Сохранить.

Вы можете создавать файлы дампа с помощью любой программы, поддерживающей формат минидампа Windows. Например, утилита командной строки Procdump от Windows Sysinternals может создавать файлы аварийного дампа процесса на основе триггеров или по запросу. Информацию об использовании других инструментов для создания файлов дампа см. в разделе «Требования и ограничения».

Открыть файл дампа

В Visual Studio выберите «Файл» > «Открыть» > «Файл».

В диалоговом окне "Открыть файл" найдите и выберите файл дампа. Обычно он имеет расширение .dmp. Выберите ОК.

В окне "Сводка файла минидампа" отображается сводка и информация о модулях файла дампа, а также действия, которые вы можете предпринять.

В разделе "Действия":

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

Найти файлы .exe, .pdb и исходные файлы

Чтобы использовать все функции отладки в файле дампа, Visual Studio необходимо:

  • Файл .exe, для которого был создан дамп, и другие двоичные файлы (DLL и т. д.), использованные в процессе создания дампа.
  • Файлы символов (.pdb) для .exe и других двоичных файлов.
  • Файлы .exe и .pdb, которые точно соответствуют версии и сборке файлов при создании дампа.
  • Исходные файлы для соответствующих модулей. Вы можете воспользоваться дизассемблированием модулей, если не можете найти исходные файлы.

Если в дампе есть данные кучи, Visual Studio может справиться с отсутствующими двоичными файлами для некоторых модулей, но она должна иметь двоичные файлы для достаточного количества модулей для создания допустимых стеков вызовов.

Поиск путей для файлов .exe

Visual Studio автоматически ищет в этих местах файлы .exe, которые не включены в файл дампа:

  1. Папка, содержащая файл дампа.
  2. Путь к модулю, указанный в файле дампа, который является путем к модулю на компьютере, на котором был собран дамп.
  3. Пути к символам, указанные в меню Инструменты (или Отладка) > Параметры > Отладка > Символы. Вы также можете открыть страницу «Символы» на панели «Действия» окна «Сводка файла дампа». На этой странице вы можете добавить дополнительные местоположения для поиска.

Использование страниц «Без двоичных файлов», «Без символов» или «Источник не найден»

Если Visual Studio не может найти в дампе файлы, необходимые для отладки модуля, отображается страница «Двоичный файл не найден», «Символы не найдены» или «Источник не найден». На этих страницах представлена ​​подробная информация о причине проблемы и ссылки на действия, которые помогут вам найти файлы. См. Указание символа (.pdb) и исходных файлов.

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

Открытие файла дампа с кучей в Visual Studio похоже на остановку в точке останова в сеансе отладки. Хотя вы не можете продолжить выполнение, вы можете проверить стеки, потоки и значения переменных приложения во время создания дампа.

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

Отладчик Visual Studio может сохранять файлы дампа для управляемого или машинного кода. Он может отлаживать файлы дампа, созданные Visual Studio или другими приложениями, сохраняющими файлы в формате minidump.

Требования и ограничения

  • Для отладки файлов дампа с 64-разрядных компьютеров Visual Studio должна быть запущена на 64-разрядном компьютере.
  • Visual Studio может отлаживать файлы дампа управляемых приложений из ОС Linux.

Visual Studio может отлаживать файлы дампа нативных приложений с устройств ARM. Он также может отлаживать дампы управляемых приложений с устройств ARM, но только в собственном отладчике.

Для отладки файлов дампа режима ядра или использования расширения отладки SOS.dll в Visual Studio загрузите инструменты отладки для Windows в комплекте драйверов Windows (WDK).

Visual Studio не может отлаживать файлы дампа, сохраненные в старом формате полного дампа пользовательского режима. Полный дамп пользовательского режима — это не то же самое, что дамп с кучей.

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

Дамп файлов с кучами или без них

Файлы дампа могут содержать или не содержать информацию о куче.

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

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

Создать файл дампа

Во время отладки процесса в Visual Studio вы можете сохранить дамп, когда отладчик остановился на исключении или в точке останова.

Если включена своевременная отладка, вы можете подключить отладчик Visual Studio к аварийному процессу за пределами Visual Studio, а затем сохранить файл дампа из отладчика. См. раздел Присоединение к запущенным процессам.

Чтобы сохранить файл дампа:

При остановке из-за ошибки или точки останова во время отладки выберите «Отладка» > «Сохранить дамп как».

В диалоговом окне "Сохранить дамп как" в разделе "Тип файла" выберите Минидамп или Минидамп с кучей (по умолчанию).

Перейдите к пути и выберите имя для файла дампа, а затем нажмите Сохранить.

Вы можете создавать файлы дампа с помощью любой программы, поддерживающей формат минидампа Windows. Например, утилита командной строки Procdump от Windows Sysinternals может создавать файлы аварийного дампа процесса на основе триггеров или по запросу.Информацию об использовании других инструментов для создания файлов дампа см. в разделе «Требования и ограничения».

Открыть файл дампа

В Visual Studio выберите «Файл» > «Открыть» > «Файл».

В диалоговом окне "Открыть файл" найдите и выберите файл дампа. Обычно он имеет расширение .dmp. Выберите ОК.

В окне "Сводка файла минидампа" отображается сводка и информация о модулях файла дампа, а также действия, которые вы можете предпринять.

В разделе "Действия":

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

Найти файлы .exe, .pdb и исходные файлы

Чтобы использовать все функции отладки в файле дампа, Visual Studio необходимо:

  • Файл .exe, для которого был создан дамп, и другие двоичные файлы (DLL и т. д.), использованные в процессе создания дампа.
  • Файлы символов (.pdb) для .exe и других двоичных файлов.
  • Файлы .exe и .pdb, которые точно соответствуют версии и сборке файлов при создании дампа.
  • Исходные файлы для соответствующих модулей. Вы можете воспользоваться дизассемблированием модулей, если не можете найти исходные файлы.

Если в дампе есть данные кучи, Visual Studio может справиться с отсутствующими двоичными файлами для некоторых модулей, но она должна иметь двоичные файлы для достаточного количества модулей для создания допустимых стеков вызовов.

Поиск путей для файлов .exe

Visual Studio автоматически ищет в этих местах файлы .exe, которые не включены в файл дампа:

  1. Папка, содержащая файл дампа.
  2. Путь к модулю, указанный в файле дампа, который является путем к модулю на компьютере, на котором был собран дамп.
  3. Пути к символам, указанные в меню Инструменты (или Отладка) > Параметры > Отладка > Символы. Вы также можете открыть страницу «Символы» на панели «Действия» окна «Сводка файла дампа». На этой странице вы можете добавить дополнительные местоположения для поиска.

Использование страниц «Без двоичных файлов», «Без символов» или «Источник не найден»

Если Visual Studio не может найти в дампе файлы, необходимые для отладки модуля, отображается страница «Двоичный файл не найден», «Символы не найдены» или «Источник не найден». На этих страницах представлена ​​подробная информация о причине проблемы и ссылки на действия, которые помогут вам найти файлы. См. Указание символа (.pdb) и исходных файлов.

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

Источник: Windows Central

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

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

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

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

Как создать файл аварийного дампа с помощью диспетчера задач

Чтобы создать файл аварийного дампа с помощью диспетчера задач Windows 10, выполните следующие действия:

  1. Откройте Пуск.
  2. Выполните поиск Диспетчера задач и щелкните верхний результат, чтобы открыть приложение.
  3. Перейдите на вкладку "Процессы".

Щелкните правой кнопкой мыши приложение или процесс и выберите параметр "Создать файл дампа".

Источник: Windows Central

Нажмите кнопку "Открыть местоположение файла".

Источник: Windows Central

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

Как создать файл дампа денежных средств с помощью командной строки

Кроме того, вы также можете использовать ProcDump, инструмент командной строки, доступный на веб-сайте Microsoft Sysinternals, который позволяет вам отслеживать программу на наличие всплесков процессора и создавать аварийный дамп, который затем можно использовать для определения причины эта проблема. Однако вы также можете использовать этот инструмент для создания аварийных дампов вручную с помощью командной строки.

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

Нажмите ссылку "Загрузить ProcDump".

Источник: Windows Central

Введите следующую команду, чтобы открыть папку ProcDump, и нажмите Enter:

В команде обязательно обновите путь с указанием местоположения папки с файлами ProcDump.

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

В команде замените APP-NAME на имя исполняемого файла приложения.

В этом примере создается файл ошибки дампа для Проводника:

Источник: Windows Central

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

В команде замените PROCESS-ID фактическим идентификатором процесса или приложения.

В этом примере создается файл ошибки дампа для Проводника с идентификатором процесса 6112:

Совет: идентификатор процесса (PID) приложения всегда можно найти на вкладке "Сведения" диспетчера задач или с помощью команды списка задач.

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

procdump -ma APP-OR-PID

В команде замените APP-OR-PID на имя или идентификатор процесса приложения.

В этом примере создается полный файл дампа для Проводника:

procdump -ma проводник

Источник: Windows Central

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

После выполнения этих шагов файл аварийного дампа будет создан (обычно) в папке с файлами ProcDump.

В этом руководстве основное внимание уделяется основам создания файла аварийного дампа, но вы можете использовать procdump /? чтобы узнать обо всех возможностях утилиты.

Дополнительные ресурсы по Windows 10

Для получения дополнительных полезных статей, обзоров и ответов на распространенные вопросы о Windows 10 посетите следующие ресурсы:

Мы можем получать комиссию за покупки по нашим ссылкам. Узнать больше.

Все, что вам нужно знать об Age of Empires 4

Наконец-то вышла Age of Empires 4, и поклонники стратегий в реальном времени с головой окунулись в нее. Вот что вам нужно знать об играх, когда они выходят на сцену RTS.

Обязательные игры для Xbox, которые выйдут в 2022 году и позже

Что ждет Xbox Series X, Xbox Series S и Xbox One в будущем? Вот самые масштабные и яркие игры, которые мы с нетерпением ждем.

Выпущено обновление Surface Duo за март 2022 г.: вот что нового

Исходный разблокированный Microsoft Surface Duo получает обновление за март 2022 г. Хотя в нем не так уж много нового, он повышает стабильность работы устройства.

Ознакомьтесь с этими обязательными приложениями Windows для Суперкубка LVI

Суперкубок LVI наконец-то здесь. Чтобы получить наилучшие впечатления от большой игры, обязательно скачайте эти приложения для Windows 11 и Windows 10.

Команда .dump создает файл аварийного дампа пользовательского режима или режима ядра.

Параметры

Параметры
Представляет один или несколько следующих параметров.

/a
Создавать дампы для всех процессов (требуется -u).

/b[a]
Дамп пакета в CAB и удаление дампа. Дополнительная информация включается, если указан параметр a.

/c
Добавить комментарий (поддерживается не во всех форматах).

/j
Укажите адрес JIT_DEBUG_INFO.

/o
Перезаписывает существующий файл дампа с тем же именем. Если этот параметр не используется и существует файл с таким же именем, файл дампа не записывается.

/u
Добавить уникальный идентификатор к имени дампа.

/f[FullOptions]
(Режим ядра:) Создает полный дамп памяти.

(Режим пользователя:) Создает полный дамп пользовательского режима. Дополнительные сведения см. в разделе «Разновидности файлов дампа пользовательского режима». Несмотря на свои имена, самый большой файл минидампа на самом деле содержит больше информации, чем полный дамп пользовательского режима. Например, .dump /mf или .dump /ma создает больший и более полный файл, чем .dump /f. В пользовательском режиме .dump /m[MiniOptions] всегда предпочтительнее, чем .dump /f.

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

FullOption Эффект
y Добавляет регистрационную информацию AVX в файл дампа.

/m[MiniOptions]
Создает небольшой дамп памяти (в режиме ядра) или минидамп (в пользовательском режиме ) Дополнительные сведения см. в разделе Файлы дампа пользовательского режима. Если не указано ни /f, ни /m, по умолчанию используется /m.

В пользовательском режиме за /m могут следовать дополнительные MiniOptions, указывающие дополнительные данные, которые должны быть включены в дамп. Если MiniOptions не включены, дамп будет включать информацию о модуле, потоке и стеке, но не дополнительные данные. Вы можете добавить любой из следующих MiniOptions, чтобы изменить содержимое файла дампа; они чувствительны к регистру.

< td>Добавляет дополнительную память в минидамп. Вторичная память — это любая память, на которую ссылается указатель в стеке или резервном хранилище, а также небольшая область, окружающая этот адрес.
MiniOption Эффект
a Создает минидамп со всеми необязательными дополнениями. Параметр /ma эквивалентен /mfFhut — он добавляет в минидамп полные данные памяти, данные дескриптора, информацию о выгруженном модуле, базовую информацию о памяти и информацию о времени выполнения потока. Любая ошибка при чтении недоступной памяти приводит к прекращению создания минидампа.
A Опция /mA эквивалентна /ma, за исключением того, что она игнорирует любые сбой при чтении недоступной памяти и продолжение создания минидампа.
f Добавляет полные данные памяти в минидамп. Будут включены все доступные зафиксированные страницы, принадлежащие целевому приложению.
F Добавляет в минидамп всю основную информацию о памяти. Это добавляет в минидамп поток, содержащий всю основную информацию о памяти, а не только информацию о действительной памяти. Это позволяет отладчику восстановить полную структуру виртуальной памяти процесса при отладке минидампа.
h Добавляет данные об дескрипторах, связанных с целевое приложение в минидамп.
u Добавляет информацию о незагруженном модуле в минидамп. Это доступно только в Windows Server 2003 и более поздних версиях Windows.
t Добавляет в минидамп дополнительную информацию о потоке. Сюда входит время потока, которое можно отобразить с помощью расширения !runaway или команды .ttime (отображать время потока) при отладке минидампа.
i
p Добавляет блок среды процесса (PEB) и данные блока среды потока (TEB) в минидамп. Это может быть полезно, если вам нужен доступ к системной информации Windows о процессах и потоках приложения.
w Добавляет все зафиксированные частные страницы для чтения и записи в минидамп.
d Добавляет все сегменты данных для чтения и записи в исполняемый образ в минидамп.
c Добавляет разделы кода в изображения.
r Удаляет из минидампа эти части стека и хранить память, которая бесполезна для воссоздания трассировки стека. Локальные переменные и значения других типов данных также удаляются.Эта опция не уменьшает размер минидампа (поскольку эти разделы памяти просто обнуляются), но полезна, если вы хотите защитить конфиденциальность других приложений.
R Удаляет полные пути модулей из минидампа. Будут включены только имена модулей. Это полезная опция, если вы хотите защитить конфиденциальность структуры каталогов пользователя.
y Добавляет регистрационную информацию AVX в файл дампа.< /td>

Параметры режима ядра

В режиме ядра доступны следующие параметры.

/k
Создать дамп только с памятью ядра.

/ka
Создать дамп с активным ядром и памятью пользовательского режима.

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

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

Примечания

Эту команду можно использовать в различных ситуациях:

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

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

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

Вы можете контролировать, какой тип файла дампа будет создан:

В режиме ядра для создания полного дампа памяти используйте параметр /f. Чтобы создать небольшой дамп памяти, используйте параметр /m (или без параметров). Команда .dump не может создать дамп памяти ядра.

В пользовательском режиме лучше всего использовать .dump /m[MiniOptions]. Хотя «m» означает «минидамп», файлы дампа, созданные с помощью этой MiniOption, могут иметь разный размер: от очень маленьких до очень больших. Указав правильные MiniOptions, вы можете точно контролировать, какая информация будет включена. Например, .dump /ma создает дамп с большим объемом информации. Старая команда, .dump /f, создает файл "стандартного дампа" среднего размера и не может быть изменена.

Вы не можете указать, какой процесс выгружать. Все запущенные процессы будут сброшены.

Параметры /xc, /xr, /xp и /xt используются для хранения сведений об исключениях и контексте в файле дампа. Это позволяет выполнять команду .ecxr (отображать запись контекста исключения) для этого файла дампа.

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

Информацию об дескрипторе можно прочитать с помощью команды расширения !handle.

Читайте также: