Обнаружение сбоев

Узнайте, как настроить отчёты о сбоях через Sentry в S2-Launcher для захвата дампов, логов и трассировок вызовов плагинов.

S2-Launcher поставляется со встроенной интеграцией Sentry для обнаружения и отправки отчётов о сбоях. При включении система автоматически отправляет дампы сбоев в ваш бэкенд Sentry вместе с логами и полным стеком вызовов плагинов, записанным в виде хлебных крошек. По умолчанию Sentry отключён и требует явного включения через редактирование файла конфигурации sentry.jsonc.

Конфигурация

Файл sentry.jsonc расположен рядом с исполняемым файлом crashpad-handler:

  • Windows: bin/win64/sentry.jsonc
  • Linux: bin/linuxsteamrt64/sentry.jsonc

Откройте файл и внесите следующие изменения для включения отчётов о сбоях.

Включение Sentry

Установите "enabled" в значение true:

"enabled": true

Укажите ваш DSN

Замените заглушку DSN на DSN вашего проекта с sentry.io. Его можно найти в разделе Project Settings → Client Keys (DSN):

"dsn": "https://your-sentry-dsn@sentry.io/your-project-id"

Что попадает в отчёт

После включения Sentry будет захватывать следующее при каждом сбое:

  • Дампы сбоев: Полные файлы minidump, отправляемые в ваш проект Sentry и доступные в панели Issues.
  • Логи: Логи сессий из пути, указанного в logs_path.
  • Хлебные крошки вызовов плагинов: Стек вызовов функций плагинов, предшествующих сбою, записанный в виде хлебных крошек Sentry. Это позволяет легко отследить, какой плагин вызвал ошибку.

Полный справочник конфигурации

Ниже приведён полный файл sentry.jsonc со всеми доступными параметрами. Обязательные поля указаны вверху; расширенные параметры закомментированы и могут быть раскомментированы при необходимости.

{
  // Обязательно: Sentry DSN (Data Source Name)
  "dsn": "https://your-sentry-dsn@sentry.io/your-project-id",

  // Обязательно: Пути к директориям
  "database_path": "../../${S2_GAME_NAME}/addons/plugify/crashes",
  "logs_path": "../../${S2_GAME_NAME}/addons/plugify/logs/sessions",

  // Базовая идентификация релиза
  "environment": "production",
  "release": "${S2_VERSION}",

  // Пользовательские теги
  "tags": {
    "product": "${PROJECT_DESCRIPTION}",
    "version": "${S2_VERSION}",
    "game": "${S2_GAME_NAME}"
  },

  // Пользовательские вложения
  "attachments": [],

  // Частота выборки (от 0.0 до 1.0)
  "sample_rate": 1.0,

  // Отладка и логирование
  "debug": false,
  "listen_console": false,

  // Включение/отключение Sentry
  "enabled": false,

  // Расширенные параметры (раскомментируйте для использования):

  // Идентификатор дистрибутива релиза
  // "dist": "",

  // Настройки сети
  // "proxy": "",
  // "ca_certs": "",
  // "transport_thread_name": "",

  // Пользовательский путь к обработчику (по умолчанию crashpad_handler, если не указан)
  // "handler_path": "",

  // Частота выборки трассировок (от 0.0 до 1.0)
  // "traces_sample_rate": 0.0,

  // Ограничения
  // "max_breadcrumbs": 100,
  // "max_spans": 1000,
  // "shutdown_timeout": 2000,

  // Параметры логирования
  // "enable_logging_when_crashed": true,
  // "logger_level": "debug",

  // Отслеживание сессий
  "auto_session_tracking": true,
  // "require_user_consent": false,

  // Обработка стека вызовов
  "symbolize_stacktraces": true,

  // Параметры обработчика сбоев
  // "system_crash_reporter_enabled": false,
  // "crashpad_wait_for_upload": false,
  // "crashpad_limit_stack_capture_to_sp": false,

  // Дополнительные функции
  // "attach_screenshot": false,
  // "propagate_traceparent": false,

  // Интеграция с логированием
  // "enable_logs": false,
  // "logs_with_attributes": false,
  // "logs_with_breadcrumbs": false
}

Описание ключевых параметров

ПараметрПо умолчаниюОписание
enabledfalseГлавный переключатель. Должен быть true для отправки отчётов.
dsn(заглушка)DSN вашего проекта Sentry. Обязателен для отправки событий.
database_path(относительно игры)Место хранения дампов сбоев локально перед загрузкой.
logs_path(относительно игры)Файлы логов сессий, прикрепляемые к отчётам о сбоях.
sample_rate1.0Доля отправляемых событий (1.0 = 100%). Уменьшите для снижения объёма.
symbolize_stacktracestrueПреобразует сырые адреса в имена функций в стеке вызовов.
auto_session_trackingtrueОтслеживает состояние сессий (сбой или нормальное завершение) в Sentry.
debugfalseВключает подробный вывод Sentry SDK для отладки.
logs_with_breadcrumbsfalseВключает вывод стека вызовов плагинов в хлебные крошки.

Устранение неполадок

  1. Сбои не появляются в Sentry:
    • Убедитесь, что в sentry.jsonc установлено "enabled": true.
    • Проверьте правильность DSN и существование проекта на sentry.io.
    • Убедитесь, что crashpad_handler.exe (Windows) или crashpad_handler (Linux) находится в той же директории, что и лаунчер.
  2. Отсутствуют хлебные крошки:
    • Вызовы плагинов записываются только если менеджер плагинов был загружен до сбоя. Убедитесь, что Plugify успешно инициализировался (выполните plg --version в консоли).
  3. Дампы сбоев не записываются локально:
    • Убедитесь, что процесс имеет права на запись в директорию database_path.
    • Директория создаётся автоматически, но родительский путь должен существовать.