What is recorded
A terminated app cannot send anything, so a crash and the session it ended are reported at
the next launch, with the release, build and OS of the run that crashed.
Terminations without a crash report are usually the system ending the app: out of memory,
or the watchdog. Release health counts them as abnormal exits,
separately from crashes.
Issues
An issue is a group of occurrences with the same cause. Every kind above becomes issues: an issue’skind is crash, error, hang, anr (Android) or abnormal_exit, and the
read API filters by it. Each occurrence keeps its session, so an issue
shows the breadcrumbs, logs and requests before each failure. An issue lists:
- its occurrences, and the users and sessions affected;
- when it was first and last seen, and in which releases;
- the devices it affects;
- the stack of its latest occurrence, symbolicated with function, file and line when the symbols are uploaded, next to the stack as the device sent it.
Grouping
Apsio computes a fingerprint for each occurrence on the server. Occurrences with the same fingerprint in the same app are one issue.
Line numbers are left out so that an unrelated edit in the same file does not split an issue.
Before symbols arrive, a frame is its binary and offset; when they arrive, the occurrence is
symbolicated again, grouped by function name, and may move to another issue. The issue’s id is
its fingerprint.
The grouping rules are versioned: a new version never moves the occurrences you already have.
Each occurrence records how it was grouped, as
grouping with a version and a reason:
Your own fingerprint
For handled errors, a fingerprint you choose replaces the default. Use it to group errors that come from different places, or to split errors that look alike:Missing symbols
When an occurrence arrives before its symbols,symbolicated is false and
missing_debug_ids lists the debug id of every image in its stack without symbols, Apple’s
system frameworks included. The images of your own app to upload, per release, come from
GET /v1/projects/{projectId}/releases/{release}/missing-symbols. See
Symbols and dSYMs.