Файлы дампов пользовательского режима

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

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

Типы файлов дампа пользовательского режима

Доступно несколько типов файлов аварийного дампа пользовательского режима. Различные типы файлов дампа делятся на две категории:

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

Полные дампы пользовательского режима

Полный дамп пользовательского режима — это базовый файл дампа в пользовательском режиме. Полный файл дампа пользовательского режима включает:

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

Вы можете сжать полный файл дампа пользовательского режима в минидамп. Чтобы сжать полный файл дампа пользовательского режима, сначала загрузите файл дампа в отладчик. Затем используйте команду .dump (Создать файл дампа), чтобы сохранить новый файл дампа в формате minidump.

Несмотря на имена, самый большой файл минидампа содержит больше сведений, чем полный файл дампа в пользовательском режиме. Например, .dump /mf команды и .dump /ma создают более крупные и полные файлы, чем .dump /f команда .

В пользовательском режиме .dump /m[MiniOptions] часто является лучшим выбором. Размер файлов дампа, создаваемых с помощью этого параметра, может отличаться от очень маленького к очень большому. Указав правильный параметр MiniOptions , вы можете точно контролировать, какие сведения будут включены.

Минидампы

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

Термин минидамп вводит в заблуждение, так как самые большие файлы минидампа содержат больше информации, чем полный файл дампа в пользовательском режиме. Например, .dump /mf или .dump /ma создает более крупный и полный файл, чем .dump /f. По этой причине для создания всех файлов дампа в пользовательском режиме рекомендуется использовать .dump /m[MiniOptions] .dump /f .

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

параметр .dump Влияние на файл дампа
/ma Создает минидамп со всеми необязательными дополнениями. Параметр /ma эквивалентен параметру /mfFhut. Он добавляет в минидамп данные о полной памяти, данные обработки, выгруженные сведения о модуле, основные сведения о памяти и время потока.
/mf Добавляет данные полной памяти в минидамп. Включаются все доступные зафиксированные страницы, принадлежащие целевому приложению.
/mF Добавляет в минидамп все основные сведения о памяти. Этот параметр добавляет поток в минидамп, который содержит все основные сведения о памяти, а не только сведения о допустимой памяти. Отладчик использует эти сведения для восстановления полного макета виртуальной памяти процесса при отладке минидампа.
/mh Добавляет данные о дескрипторах, связанных с целевым приложением, в минидамп.
/mu Добавляет выгруженные сведения о модуле в минидамп. Этот параметр доступен только в Windows Server 2003 и более поздних версиях Windows.
/mt Добавляет дополнительные сведения о потоке в минидамп. Сведения о потоке включают время потока, которое можно отобразить с помощью TTIME (Отображение времени потока) при отладке минидампа.
/mi Добавляет вспомогательную память в минидамп. Вторичная память — это любая память, на которую ссылается указатель на стек или резервное хранилище, а также небольшая область вокруг этого адреса.
/mp Добавляет данные блока среды обработки и блока среды потока в минидамп. Эти сведения могут быть полезны, если вам нужен доступ к системной информации Windows, касающейся процессов и потоков приложения.
/mw Добавляет все зафиксированные частные страницы для чтения и записи в минидамп.
/md Добавляет все сегменты данных для чтения и записи в исполняемом образе в минидамп.
/mc Добавляет разделы кода в изображения.
/mr Удаляет из частей стека minidump и сохраняет память, которая не используется для повторного создания трассировки стека. Локальные переменные и другие значения типов данных также удаляются. Этот параметр не делает минидамп меньше (неиспользуемые разделы памяти обнуляются), но он полезен, если вы хотите защитить конфиденциальность других приложений.
/mR Удаляет полные пути к модулю из минидампа. Включены только имена модулей. Этот параметр полезен, если вы хотите защитить конфиденциальность структуры каталогов пользователя.

Эти параметры можно комбинировать. Например, используйте команду .dump /mfiu , чтобы создать умеренно большой минидамп, содержащий выгруженную и вспомогательную память. Используйте команду .dump /mrR , чтобы создать минидамп, который удаляет некоторые сведения о пользователе. Полные сведения о синтаксисе см. в разделе .dump (Create Dump File) (Создание файла дампа).

Средства, используемые для создания файла дампа

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

  • ProcDump
  • CDB
  • Отладчик WinDbg

ProcDump

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

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

CDB и WinDbg

Консольный отладчик (CDB) и отладчик Windows (WinDbg) — это средства отладки, которые входят в комплект средств разработки программного обеспечения Windows и комплект драйверов для Windows. См. параметры установки в разделе Скачивание и установка отладчика Windows WinDbg.

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

  • Создайте файл дампа автоматически.
  • Создавайте файлы дампа при отладке.
  • Сжатие существующего файла дампа.

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

Автоматическое создание файла дампа

При возникновении ошибки приложения Windows может отвечать одним из нескольких способов в зависимости от параметров отладки postmortem. Если эти параметры предписывают средству отладки создать файл дампа, создается файл дампа памяти в пользовательском режиме. Дополнительные сведения см. в разделе Включение посмертной отладки.

Создание файлов дампа при отладке

При отладке приложения в пользовательском режиме CDB или WinDbg можно также использовать команду .dump (Создать файл дампа) для создания файла дампа.

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

Сжатие существующего файла дампа

Для сжатия файла дампа можно использовать CDB или WinDbg. Чтобы сжать файл дампа, начните отладку существующего файла дампа. Затем используйте .dump команду , чтобы создать файл дампа меньшего размера.

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

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

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

Дополнительные сведения см. в статье Общие сведения об отладке по времени.

Дальнейшие действия