When you compile an Objective-C application the debugging symbols are, by default, stripped from the binary. Therefore, unlike other languages such as Java, when a crash occurs, the stack traces produced are full of out of context memory addresses and ambiguous stack information. However, when the applications are compiled, a dSYM bundle is generated. This bundle allows us to match up the debugging symbols with the application's crash log to help make the stack traces useful again.
A common misunderstanding, however, is that the dSYM file must match the binary exactly as a unique dSYM is generated with each build. These unique dSYMs are identified by a UUID marked in both the crash log and dSYM bundle. As such, a dSYM bundle from a Debug iPhone Simulator Build will not map properly with a Release Build. Hence it is important to collect the dSYMs appropriate for the crashes you are working with, especially once you've launched your app into the wild.
Within Apteligent, we use these dSYMs to remap the stack traces with appropriate debugging symbols and provide that to you in a readable format, including the line number of where the crash occurred whenever possible.
Learn more about Uploading dSYMs automatically to Apteligent here.