Быстрый старт

Полностью интегрированный пример можно найти на официальном GitLab'е ОМП: демо-приложение Crasher

Регистрация и настройка

Для начала нужно:

  1. Зайти в аккаунт Tracer.
  2. Создать или вступить в организацию.
  3. Добавить проект (нужно быть администратором или владельцем организации) с платформой C/C++.

Общие директивы

Tracer собирает мета-информацию о системе, логи и дополнительные данные (пары ключ-значение), отправляя их на сервер при следующем запуске после креша.

На ОС Аврора Tracer использует минидампы, генерируемые системным пакетом crash-dumper. Минидампы содержат системную информацию, стеки всех потоков на момент сбоя, списки загруженных файлов и другие данные.

Tracer поставляется в следующей форме:

  • Разделяемая библиотека.
  • Заголовочный файл C++.
  • Python3-скрипты для загрузки отладочной информации и исполняемый файл сборщика символов,

Динамическая библиотека для конкретной платформы располагается в aurora/lib/${arch}/libtracernative.so – именно её нужно подключить к приложению, в котором вы собираетесь использовать Tracer. В папке include лежит единственный заголовочник - tracer.h

Подключение библиотеки

Распакуйте библиотеку в ваш репозиторий, например в 3rdparty/tracer:

В вашем qmake:

ARCH = $$system($$QMAKE_CXX -dumpmachine) ARCH = $$split(ARCH, "-") ARCH = $$first(ARCH) LIBS += -L$$PWD/3rdparty/tracer/aurora/lib/$$ARCH/ -ltracernative INCLUDEPATH += $$PWD/3rdparty/tracer/include DEPENDPATH += $$PWD/3rdparty/tracer/include tracernative.path = /usr/share/$$TARGET/lib tracernative.files = 3rdparty/tracer/aurora//lib/$$ARCH/libtracernative.so INSTALLS += tracernative

Загрузка символов

Tracer предоставляем специальные скрипты для загрузкм символов в автоматическом режиме после сборки. Для платформы Aurora необходимо дополнительно модифицировать .spec для загрузки символов и валидации пакета – подробнее в главе Символизация):

Инициализация

tracer_init(const tracer_str_char* app_key, const tracer_path_char* storage_dir)

Инициализирует SDK с указанием ключа приложения и директории для хранения отчётов о сбоях.

ПараметрТипОписание
app_keyconst tracer_str_char*Ключ приложения (UTF-8 строка)
storage_dirconst tracer_path_char*Директория для хранения файлов сбоев (C-строка с путём)

В вашем app.cpp:

#include "tracer.h" int main() { const char* app_key = "your-app-key"; const tracer_path_char* storage_dir = "/path/to/crash/storage"; tracer_init(app_key, storage_dir); return 0; }

tracer_set_platform_info2(const tracer_str_char* version_name, int version_code)

Передаёт информацию о платформе для включения в отчёты о сбоях.

ПараметрТипОписание
version_nameconst tracer_str_char*Название версии приложения (UTF-8 строка)
version_codeintВерсия приложения в виде целого числа

Для передачи информации о платформе в вашем main.cpp:

#include "tracer.h" int main() { const char* version_name = "1.0.0"; int version_code = 100; const char* device = "device_name"; const char* vendor = "vendor_name"; const char* os_version = "os_version"; tracer_set_platform_info(version_name, version_code, device, vendor, os_version); return 0; }

Пример инициализации и использования Tracer в приложении:

auto data_path = Aurora::Application::filesDir(false); auto cache_path = Aurora::Application::cacheDir(false); data_path.mkpath("tracer"); if (data_path.cd("./tracer")) { auto data_path_ba = data_path.absolutePath().toUtf8(); auto cache_path_ba = cache_path.absolutePath().toUtf8(); // опционально tracer_enable_logging_to_console(); // передвигаем креш с прошлого запуска tracer_aurora_collect_minidump_from_cachedir(cache_path_ba.constData(), data_path_ba.constData()); // инициализируемся tracer_init("$$TRACER_APP_TOKEN$$", data_path_ba.constData()); // можно добавить пары ключ-значение tracer_set_key("key", "value"); tracer_set_key(u8"ключ", u8"значение"); // ...или логи tracer_log("log event"); tracer_log(u8"логгируемое событие"); // сообщаем версию приложения tracer_set_platform_info2("sample_version", 1); // загружаем собранные с прошлого запуска/ов креши с логами tracer_upload_crashes(); }