So you want to write your own crash reporter so that you can receive reports and symbolize them?
Recording crash reports is very difficult, see these two articles from the developer of the Open Source PLCrashReporter library to understand that: http://landonf.bikemonkey.org/code/objc/Reliable_Crash_Reporting.20110912.html and http: // landonf. bikemonkey.org/code/crashreporting/Reliable_Crash_Reporting_1.1.20130119.html p>
In short:
- All code must be asynchronous. This means that you can NOT use any Objective-C code. Most C methods are also not safe for asynchronous use.
- You can (mostly) not allocate new memory after a failure occurs.
All the details that you ask, and those that have not yet asked to write such a reporter, will require more writing than they can fit into the answer.
Just don’t write it yourself and don’t worry. There are many ready-to-use solutions. Some of them are Open Source and can be checked if they are safe for the above rules, some of them are closed and cannot be easily checked (the articles cited above are in detail for some of them).
I will not give recommendations on various solutions, as I am biased, as I am the developer of one Open Source and one commercial solution. The articles linked above analyze some of the solutions available.
So, here are some of them.
Open source:
- PLCrashReporter : Used in thousands of applications since 2009. Safe, reliable, generates crash reports in a standard format that can be symbolized.
- KSCrash : Pretty new. Generates crash reports in standard format. It can connect to various server solutions.
- QuincyKit : Client SDK and PHP server component based on PLCrashReporter. It makes integration with PLCrashReporter simple, and the server component collects reports and groups them after their symbols. Symbolization can be automated using your own Mac for actual symbolism. (Disclaimer: I'm the developer of this)
Hosting / Commercial Solutions:
- Bugsense : Free and Paid Plans. Uses PLCrashReporter under the hood. The rest of the SDK seems closed. Server side characters.
- BugSnag : Free and Paid Plans. Open source SDK.
- Crashlytics : Free. Closed source. Used PLCrashReporter under the hood, now uses its own implementation. Server side characters.
- Crittercism : Free and Paid Plans. Uses PLCrashReporter under the hood. The rest of the SDK seems closed. Server side characters.
- HockeyApp : Paid plans, 1 month trial. Uses PLCrashReporter under the hood, all open source SDKs. Generates crash reports in standard format. Symbols on the server side. (Disclaimer: I am one of the co-founders and developers of this).
- Sentry : Paid, fairly new, open source (SDK and server).
- Testflight : free, closed source. Server side characters.
There, of course, there is something else that I forgot about.
Kerni source share