What is it all about?
The Crashlytics SDK uses a multi-step symbolization process to provide progressively higher levels of detail. We start with on-device symbolization. Once a crash report makes it into our system, stack frames are then re-processed against your application's dSYM on our servers. This two-step symbolization process, coupled with our advanced aggregation algorithms, provides the highest information fidelity available.
* Defensive Reporting - Processes that crash often end up sustaining considerable damage before the kernel takes action to terminate them. This can result in secondary crashes, where the crash handling code itself is unable to operate correctly and fails. We’ve invested in making our file handling code extremely defensive, so parsing cache files can’t crash unexpectedly. * Stack Unwinding - One of the most abstruse aspects of crash detection is stack unwinding, the seemingly omniscient ability to determine historic code execution that directly lead to the crash. Our SDK determines the calling instruction that works in the case of objc_msgSend and many other methods that conform to Apple’s iOS ABI. * Mach Exceptions - We capture crashes using the lowest level system available on iOS and OS X. The Mach Exception API makes it possible for us to capture every crash, consistently, and without some of the indeterminate behavior of other mechanisms. This also gives us data that much more closely matches what a developer would see in Xcode.