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

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

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

Настройка

sentry.jsonc лежит рядом с лаунчером и crashpad_handler:

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

Загрузчик читает его при запуске. Не удаляйте файл и при выключенном Sentry: без него Launcher не запускается, а с Runtime сервер запускается без Plugify.

Чтобы включить отчёты, задайте enabled и свой DSN из Project Settings → Client Keys (DSN) на sentry.io:

"dsn": "https://<key>@<org>.ingest.sentry.io/<project>",
"enabled": true

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

  • Дамп сбоя: минидамп процесса, в разделе Issues вашего проекта Sentry.
  • Вывод консоли: последний вывод консоли игры, как сообщение события.
  • Сообщения лога Plugify: при "logs_with_breadcrumbs": true последние сообщения лога Plugify прикладываются как хлебные крошки, с модулем, файлом и функцией, которые их записали. max_breadcrumbs ограничивает их число.
  • Лог сессии: при "listen_console": true вывод консоли ещё и пишется в session.log в папке logs_path.
  • Вложения: файлы из списка attachments.

Файл из поставки

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

{
  // Required: Sentry DSN (Data Source Name)
  "dsn": "https://your-sentry-dsn@sentry.io/your-project-id",

  // Required: Directory paths
  "database_path": "../../csgo/addons/plugify/crashes",
  "logs_path": "../../csgo/addons/plugify/logs/sessions",

  // Basic release identification
  "environment": "production",
  "release": "2.5.6",

  // Custom tags
  "tags": {
    "product": "Plugify S2 Launcher",
    "version": "2.5.6",
    "game": "csgo"
  },

  // Custom attachments
  "attachments": [
  ],

  // Sampling rate (0.0 to 1.0)
  "sample_rate": 1.0,

  // Debug and logging
  "debug": false,
  "listen_console": false,

  // Enable/disable Sentry
  "enabled": false,

  // Advanced options (uncomment to use):

  // Release distribution identifier
  // "dist": "",

  // Network configuration
  // "proxy": "",
  // "ca_certs": "",
  // "transport_thread_name": "",

  // Custom handler path (defaults to crashpad_handler if not specified)
  // "handler_path": "",

  // Tracing sample rate (0.0 to 1.0)
  // "traces_sample_rate": 0.0,

  // Limits
  // "max_breadcrumbs": 100,
  // "max_spans": 1000,
  // "shutdown_timeout": 2000,

  // Logging options
  // "enable_logging_when_crashed": true,
  // "logger_level": "debug",

  // Session tracking
  "auto_session_tracking": true,
  // "require_user_consent": false,

  // Stack trace processing
  "symbolize_stacktraces": true,

  // Crash reporter options
  // "system_crash_reporter_enabled": false,
  // "crashpad_wait_for_upload": false,
  // "crashpad_limit_stack_capture_to_sp": false,

  // Additional features
  // "attach_screenshot": false,
  // "propagate_traceparent": false,

  // Logging integration
  // "enable_logs": false,
  // "logs_with_attributes": false,
  // "logs_with_breadcrumbs": false
}

Основные параметры

ПараметрПо умолчаниюОписание
enabledfalseВключает отчёты.
dsnзаглушкаDSN вашего проекта Sentry. Обязателен при enabled: true.
database_path../../csgo/addons/plugify/crashesГде хранятся дампы до отправки. Создаётся, если её нет.
logs_path../../csgo/addons/plugify/logs/sessionsПапка для session.log.
listen_consolefalseПишет вывод консоли в session.log.
logs_with_breadcrumbsfalseПрикладывает к сбою последние сообщения лога Plugify как хлебные крошки.
max_breadcrumbs100Сколько хлебных крошек хранится.
sample_rate1.0Доля отправляемых событий, от 0.0 до 1.0.
symbolize_stacktracestrueПревращает адреса в стеке вызовов в имена функций.
auto_session_trackingtrueУчитывает в Sentry нормальные и упавшие сессии.
debugfalseПодробный вывод Sentry SDK для поиска проблем.

Решение проблем

  1. Сбои не доходят до Sentry:
    • Проверьте, что задано "enabled": true и DSN указан верно.
    • Проверьте, что crashpad_handler.exe (Windows) или crashpad_handler (Linux) лежит рядом с лаунчером, или укажите путь к нему в handler_path.
    • Проверьте, что процесс запущен не под отладчиком.
  2. Нет хлебных крошек: задайте "logs_with_breadcrumbs": true.
  3. Дампы не записываются: проверьте, что процесс может писать в database_path.