Что такое формат файла DUMP?
Расширение .dump используется файлами символов, созданными Google Breakpad - библиотекой отчетов о сбоях с открытым исходным кодом, используемой в различном ПО, включая Mozilla Firefox. Вместо записи самих деталей сбоя, файлы .dump представляют собой текстовые таблицы отладочных символов, созданные инструментом dump_syms из нативных отладочных данных бинарного файла (Windows PDB-файлы, ELF DWARF или macOS DWARF/STABS). Они сопоставляют необработанные адреса машинного кода с именами функций, путями к исходным файлам и номерами строк.
Файлы .dump создаются заранее и хранятся на сервере символов или в локальном каталоге, а не генерируются в момент сбоя программы. Когда происходит сбой, сопутствующий инструмент minidump_stackwalk считывает файл символов .dump вместе с отчетом о сбое minidump для создания человекочитаемого стека вызовов. Полученный символизированный след вместе с отчетом о сбое может быть отправлен разработчикам программного обеспечения, чтобы они могли определить и устранить ошибки, вызвавшие сбой программы.
Файл символов Breakpad представляет собой построчный текст ASCII. Первая строка всегда является записью MODULE - например, MODULE Linux x86_64 <build-id> libfoo.so - идентифицирующей ОС, архитектуру процессора, уникальный ID сборки и имя библиотеки или исполняемого файла. Последующие записи (FILE, FUNC, PUBLIC, STACK) содержат остальную часть сопоставления символов; более поздние версии формата добавляют записи INLINE и INLINE_ORIGIN, а средства чтения спроектированы так, чтобы игнорировать неизвестные типы записей. Размер файлов варьируется от десятков килобайт до сотен мегабайт в зависимости от размера библиотеки.
Поскольку файлы символов .dump являются обычным ASCII, их можно просмотреть в любом текстовом редакторе, таком как Notepad++ или VS Code, или обработать программно с помощью Sentry CLI и библиотеки symbolic, которые также поддерживают тот же формат символов Breakpad.
Безопасность и защита
РИСК: LOWФайл символов Breakpad является обычным текстом без исполняемого содержимого, поэтому его безопасно открывать. Единственная реальная проблема заключается в том, что файлы символов раскрывают внутренние имена функций и пути к исходному коду программы (незначительное раскрытие информации), поэтому вендоры обычно хранят их на частных серверах символов. Поскольку расширение «.dump» также используется для дампов памяти и экспорта баз данных, убедитесь, чем на самом деле является файл, прежде чем считать его безвредным - необработанный дамп памяти может содержать конфиденциальные данные.
Детали формата
в двух словах- Файл дампа памяти / сбоя - Необработанный дамп памяти процесса или ядра (например, core dump, Windows .dmp) - бинарный файл, открываемый в отладчике; не связан с текстовыми файлами символов.
- Дамп базы данных / SQL - Текстовый экспорт базы данных, созданный такими инструментами, как mysqldump/pg_dump; воспроизводится обратно в базу данных, не является таблицей символов.
- Wireshark / захват пакетов или общий дамп данных - Различные инструменты записывают «.dump» необработанных захваченных или экспортированных данных; формат полностью зависит от создавшего его инструмента.
Программы, открывающие файлы DUMP
minidump_stackwalk с minidump и файлами символов для создания символизированного стека вызовов; dump_syms генерирует эти файлы. minidump_stackwalk с minidump и файлами символов для создания символизированного стека вызовов; dump_syms генерирует эти файлы. minidump_stackwalk с minidump и файлами символов для создания символизированного стека вызовов; dump_syms генерирует эти файлы. Технические подробности
глубокая спецификация| Тип формата | Текстовая таблица отладочных символов; построчные записи ASCII, сопоставляющие адреса машинного кода с именами функций и местоположением в исходном коде |
| MIME-тип | text/plain (также встречается application/octet-stream в общих контекстах передачи) |
| Заголовок файла / сигнатура | Бинарные магические байты отсутствуют; первая строка всегда является записью MODULE: MODULE <os> <arch> <build-id> <name> |
| Кодировка текста | ASCII; разделители строк зависят от платформы (LF в Unix, CRLF в Windows) |
| Контейнер | Простой текст - без бинарной оболочки, встроенных разделов или фрагментов |
| Сжатие | Встроенное отсутствует; файлы могут храниться сжатыми с помощью gzip на внешних серверах символов |
| Типичный размер файла | От десятков КБ до сотен МБ - масштабируется в зависимости от количества функций и строк исходного кода в бинарном файле |
| Типы записей | MODULE (заголовок), FILE (список путей к исходникам), FUNC (диапазоны адресов функций), PUBLIC (экспортируемые символы), записи номеров строк, STACK (развертывание стека), INLINE, INLINE_ORIGIN |
| Build ID / ключ соответствия | Запись MODULE содержит отладочный ID сборки (хеш), используемый для сопоставления файла символов с конкретным бинарным файлом или minidump |
| Инструмент создания | dump_syms (Breakpad/Crashpad) - извлекает данные символов из Windows PDB, ELF DWARF или macOS DWARF/STABS |
| Инструменты потребления | minidump_stackwalk (Breakpad), Sentry CLI, библиотека symbolic (Rust/Python) - все они читают этот формат для символизации стеков вызовов |
| Поддержка платформ | Windows, macOS, Linux, Android - Breakpad и Crashpad создают и используют файлы символов .dump на всех четырех платформах |
| Расширяемость формата | Аддитивный дизайн записей на основе ключевых слов; парсеры пропускают нераспознанные типы записей, что позволяет добавлять записи INLINE и INLINE_ORIGIN без нарушения работы старых инструментов |
| Читаемые форматы отладки | Windows PDB (.pdb), ELF DWARF (.so / .elf), macOS DWARF и STABS (.dSYM / .dylib) - dump_syms преобразует их все в единый формат символов .dump |
| Выпущен | 2007 (Google Breakpad open-sourced; symbol-file format dates from that era) |
| Последняя версия | Breakpad symbol format additively extended (INLINE/INLINE_ORIGIN records added in later revisions); no formal version number |
| Открыть стандартное | Да · без роялти |
| Спецификация | github.com |
Конвертации DUMP
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах DUMP.
Часто задаваемые вопросы
Что такое файл .dump?
Как открыть файл символов Breakpad (.dump)?
minidump_stackwalk для создания стека вызовов.В чем разница между файлом символов .dump и дампом сбоя .dmp?
Почему в моем стеке вызовов отображаются шестнадцатеричные адреса вместо имен функций?
dump_syms из той же сборки (debug-id в MODULE должен совпадать) и укажите процессору путь к ним.