Crashpad

Библиотека для сбора, обработки и отправки отчётов об авариях (crash reports), разработанная Google. Она предоставляет надежный механизм для захвата дампов памяти при сбоях приложений, их локального хранения и передачи на серверы для последующего анализа. Библиотека широко используется в крупных проектах для мониторинга стабильности и диагностики проблем в production-среде.

Особенности

  • надежный захват дампов памяти при критических сбоях (крашах) и необработанных исключениях;
  • поддержка основных платформ: Windows, macOS, Linux, Android, iOS;
  • интеграция с существующими системами обработки ошибок (например, Google Breakpad);
  • возможность добавления пользовательских метаданных и аннотаций в отчёты;
  • настраиваемая политика отправки отчётов (немедленно, отложенно, по требованию);
  • минимальное влияние на производительность работающего приложения.

Основные компоненты

Crashpad состоит из нескольких модулей, которые обеспечивают полный цикл обработки аварийных ситуаций — от момента сбоя до передачи отчёта на сервер (подробнее с документацией можно ознакомиться здесь).

Захват и создание дампов

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

Ключевые компоненты захвата:

  • crashpad::CrashpadClient — основной клиент для инициализации и управления захватом сбоев;
  • обработчики исключений для различных платформ (SEH на Windows, Mach исключения на macOS, сигналы на Linux/Android);
  • создание минидампов (minidumps) с информацией о потоках, стеках, памяти и загруженных модулях;
  • поддержка захвата сбоев в отдельных процессах через crashpad::Handler.

Обработка и хранение отчётов

После захвата дампа Crashpad обрабатывает его, добавляет пользовательские метаданные и сохраняет в локальном хранилище. Библиотека обеспечивает целостность данных даже в условиях неожиданных сбоев системы.

Функции обработки и хранения:

  • crashpad::CrashReportDatabase — база данных для управления отчётами об авариях;
  • добавление аннотаций (ключ-значение) для контекстуализации сбоев;
  • прикрепление пользовательских файлов и потоков данных к отчётам;
  • сжатие и шифрование отчётов для экономии дискового пространства и безопасности;
  • ротация и очистка устаревших отчётов по настраиваемым правилам.

Отправка отчётов на сервер

Crashpad предоставляет механизмы для передачи собранных отчётов на серверы разработчиков. Поддерживаются различные протоколы и стратегии отправки, включая отложенную передачу при отсутствии сети.

Компоненты отправки:

  • crashpad::HTTPTransport — абстракция для HTTP-запросов, используемая для отправки отчётов;
  • поддержка протоколов upload символов (symupload) и отчётов (report upload);
  • настраиваемые политики повторных попыток и тайм-аутов;
  • возможность пакетной отправки нескольких отчётов;
  • интеграция с системами аутентификации и прокси.

Интеграция с системами символов

Для корректного анализа дампов памяти Crashpad поддерживает работу с файлами символов (debug symbols), которые позволяют сопоставлять адреса памяти с именами функций и исходным кодом.

Работа с символами:

  • генерация файлов символов (.sym) из бинарных файлов;
  • загрузка символов на сервер для последующего анализа;
  • поддержка различных форматов символов (Breakpad, DWARF, PDB);
  • инструменты для автоматического управления символами в пайплайне сборки.

Мониторинг и управление

Crashpad предоставляет API для мониторинга состояния системы отчетности и управления её поведением во время выполнения приложения.

Функции мониторинга и управления:

  • crashpad::Settings — настройки поведения библиотеки (автоматическая отправка, размер хранилища и др.);
  • сбор статистики по сбоям и успешным отправкам;
  • callback-и для уведомления приложения о событиях (например, об успешной отправке отчёта);
  • возможность принудительной генерации дампа для диагностических целей.

Инструменты разработки и утилиты

В состав Crashpad входят вспомогательные инструменты для разработки, тестирования и отладки системы отчетности об авариях.

Вспомогательные инструменты:

  • crashpad_handler — отдельный процесс-обработчик сбоев (рекомендуемый способ использования);
  • crashpad_database_util — утилита для просмотра и управления локальной базой отчётов;
  • crashpad_http_upload — инструмент для тестирования отправки отчётов;
  • интеграция с отладчиками (GDB, LLDB) для автоматического анализа дампов.

Использование в проекте

Документация по использованию Conan-пакетов для разработки приложений для ОС Аврора.

На сервере Conan библиотеки заранее собраны и размещены под различные версии ОС Аврора 4 и ОC Аврора 5. Для данных версий представлены архитектуры armv7hl, aarch64 и x84_64.

Библиотеку можно использовать в проекте с помощью данного conanfile.py

from conan import ConanFile

class Application(ConanFile):
    settings = "os", "compiler", "arch", "build_type"
    generators = "PkgConfigDeps"

    requires = (
        "crashpad/cci.20220219@aurora",
    )    

Процесс локальной сборки описан в документации.

crashpad

Crashpad is a crash-reporting system.
Лицензия
Apache-2.0
Версия
Скачать
armv8
1.08 Mb
MD5: 987e700df3c1ea2027ff7b7476eb0f99
Updated: 04.09.2025, 10:54:54
armv7
969.95 Kb
MD5: 22be689d03fdedc8cdc7a4baf4d57e3e
Updated: 04.09.2025, 10:55:08
x86_64
1.05 Mb
MD5: ccfed41a1a90616a9f021470e17a4e6b
Updated: 04.09.2025, 10:55:12
Использование в проекте

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.