Дамп па́мяти (; в Unix — ) — содержимое рабочей памяти одного процесса, ядра или всей операционной системы. Также может включать дополнительную информацию о состоянии программы или системы, например значения регистров процессора и содержимое стека. Многие операционные системы позволяют сохранять дамп памяти для отладки программы. Как правило, дамп памяти процесса сохраняется автоматически, когда процесс завершается из-за критической ошибки (например, из-за ошибки сегментации). Дамп также можно сохранить вручную через отладчик или любую другую специальную программу.
История
Английский термин буквально переводится как «выгрузка содержимого ядра»: на ранних компьютерах дамп означал принтерную распечатку содержимого памяти на магнитных сердечниках (). Классическая игра NetHack содержит отсылку к термину при съедении яблока: "core dumped".
В Unix
В современных Unix-подобных операционных системах дамп памяти сохраняется в виде файла, который обычно называется core или core.<номер процесса>; его формат такой же, как формат исполняемых файлов этой ОС (ELF в Linux и современных Unix, a.out в традиционных Unix-системах, Mach-O в Mac OS X). Для анализа core-файла используется отладчик (например gdb) или инструмент objdump.
В Windows
В Windows существует два вида дампов: дампы режима ядра и дампы пользовательского режима.
Дамп режима ядра
Когда в Windows происходит ошибка в ядре операционной системы, ОС не может продолжать свою работу, что приводит к так называемому синему экрану смерти (). Во время показа этого экрана идёт запись дампа режима ядра (). Тип записываемого дампа задаётся в свойствах системы во вкладке «Загрузка и восстановление». Windows поддерживает три режима записи дампа, различающиеся объёмом сохраняемой информации: Полный дамп системы () — содержит всю физическую память системы. Существуют проблемы при записи такого дампа, если в системе более 4Гб ОЗУ (это связано с тем, что 32 бита могут адресовать максимум 4Гб). Обычно записывается в файл C:\Windows\MEMORY.DMP; Дамп памяти ядра () — содержит всю память, которую использует ядро системы; Малый дамп памяти () — содержит различную информацию, например, стоп-код, параметры ошибки, список загруженных драйверов и т. п. Обычно записывается в папке C:\Windows\Minidump.
Дамп пользовательского режима
Дамп пользовательского режима (), также часто просто () — это дамп памяти отдельного процесса. Он содержит в себе выбранные к записи виды данных. В частности, это может быть: полная или частичная (отфильтрованная) память процесса; список, стек, состояние потоков; дескрипторы () объектов ядра; список загруженных библиотек, а также список выгруженных библиотек. Полностью ознакомиться с возможными вариантами можно, изучив перечисление MINIDUMP_TYPE .
См. также
Отчёт об ошибке (программирование) Ошибка сегментации
Ссылки
Why does this not work!? How to find and fix faults in Linux applications. Форматы дампа памяти в различных операционных системах:
Windows: функции для работы с minidump Анализ дампа памяти
Категория:Отладка программ