iOS and macOS support with Backtrace and PLCrashReporter
With the June product update just announced, Backtrace had some terrific news for the macOS and iOS communities—native support for the PLCrashReporter library (check out the docs here). Engineers who develop in Swift and Objective-C, or developers that are already integrated with HockeyApp, now have a powerful new crash reporting and debugging option.
Getting to Know PLCrashReports
If you don’t know about PLCrashReporter, we’ll provide a brief overview. PLCrashReports contain information about the system at the time of the fault. Some details about the diagnostic information collected are outlined below:
|SystemInfo||operating_system; os_version; architecture; timestamp; os_build|
|ApplicationInfo||identifier; version; marketing_version|
|Thread||frames: [instruction_pointer; optional symbol]; crashed; register_values|
|BinaryImage||base_address; size; uuid|
|Exception||name; reason; exception|
|Signal||name; code; address|
|ProcessInfo||process_name; process_id; process_path; parent_process_name; parent_process_id; native; start_time|
|MachineInfo||model; processor; processor_count; logical_processor_count|
This information is provided to Backtrace and made available to users as they triage and analyze their incoming crashes. Many of those attributes (including the full call stack) are indexed and queryable by users in Backtrace. You can see that PLCrashReports provide a lightweight way to gather the above information. For those developers who require more exhaustive information about the system, Backtrace also supports integration with the Crashpad library, which will generate more detailed minidump files at the time of fault.
How Backtrace Improves your PLCrashReporter Processing
By following a few relatively simple steps, the iOS and macOS development communities can quickly begin sending PLCrashReports to Backtrace. The benefits include a deeper level of analytics, industry leading methods of triage and diagnosing, and debugging with faster time to resolution. All this while using the same systems they already have in place to communicate (including Slack, Atlassian Stride, and Cisco Spark), track tickets (including Jira, Fogbugz, and Github Issues), and manage operations (including Circonus, Datadog, VictorOps, Webhooks, and more).
Joining the Backtrace family means gaining access to unique features not found elsewhere including:
- The ability to associate files, like log or configuration files, to crashes in the system and receive these as attachments.
- Automated symbolication, and now native support for the macOS and iOS dSYM format, so call stacks (and more specifically, file names and line numbers), can be populated more accurately.
- Custom Attributes to allow developers to identify specific information needed for business demands, such as app version, build tag, screen resolution, etc.
- The Query Builder, which combines a set of powerful indexing, grouping, and visualization capabilities to mine system information alongside crash and error reports for a more complete and granular diagnostic picture.
With the native PLCrashReporter library, Backtrace now supports crashes and error reporting across all major client, server, and mobile platforms, including Windows, Mac, Linux, iOS, and Android. In addition to Crashpad and Breakpad already supported for Objective-C, the newest library expands the options for crash reporting to include Swift, and iOS for mobile and tablet developers. Backtrace’s support currently extends to Mac OS X 10.5+ (x86-32 and x86-64); iOS 4.3+ (ARMv7, ARMv7s, and ARM64); and iPhone Simulator 4.3+ (x86-32 and x86-64).
How To Integrate
Migration from other platforms like HockeyApp is a simple and straightforward process if you want these more dynamic capabilities. So is integrating Backtrace into the core applications you’ve written in Swift and Objective-C, or any new applications you may be building that do not yet have a crash reporting solution. Our documentation for PLCrashReporter provides you with step-by-step instructions and the code for the integration.
If you don’t already have a Backtrace instance, create one today, or reach out in the chat below and we’ll help get you set up.