Поделиться через


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

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

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

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

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

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

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

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

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

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

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

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

Минидумпы

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

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

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

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

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

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

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

ProcDump

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

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

WinDbg и CDB

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также