Символизация данных приложений подразумевает под собой преобразование машинных адресов и стектрейсов в человекочитаемые форматы. Обычно данные приложений находятся в обфусцированном или скомпилированном виде – изменены имена классов, сокращены имена функций, переменных или вовсе указаны только адреса в памяти без указания на конкретную ст року кода или метод.
Для преобразования кода в исходное состояние используются маппинги – файлы или структуры данных, в которых содержится информация о том, как исходные данные соотносятся с обфусцированными. В зависимости от платформы формат этих файлов может отличаться:
mapping.txt
– для Android;.dSYM
– для iOS;soursemap
– для JS и т.д.Tracer самостоятельно деобфусцирует данные о крэшах приложений, применяя маппинги, загруженные в сервис на момент обработки крэша. Если Tracer не смог обнаружить соответствующие маппинги, сбой не будет символизирован и отобразится в обфусцированном виде:
ВАЖНО! Маппинги применяются только к новым событиям.
В случае, если вы загрузили в Tracer новые маппинги, все старые крэши останутся в прежнем виде:
Принудительной символизации в Tracer пока не предусмотрено.
Подробнее о загрузке символов aka файлов маппингов можно ознакомиться в соответствующей главе документации к SDK для вашей платформы.
СrashId – уникальный идентификатор события, влияющий на группировку сбоев в Tracer.
Группировка осуществляется по принципу:
crashId-группы-событий/id-конкретного-события-внутри-группы
Расчёт crashId
может немного различаться в зависимости от платформы, однако глобально на этот процесс влияют title и subtitle крэша – они берутся из имени ошибки или высчитываются из стектрейса. В случае с нефатальными ошибками в расчётах учитывается issueKey – при наличии именно по этому параметру будет производиться группировка. Номер строки и название файла не влияют на расчёты, поэтому можете быть уверены, что при изменениях в файле crashId
сбоя не изменится.
Расчёт crashId
происходит после применения маппингов, а значит один и тот же сбой в символизированном и в десимволи зированном виде получит разные crashId
и попадёт в разные группы.