Started using Crashlytics and am curious why only the DSYMs have to be uploaded and not the full .app binary to match. I was under the impression that to symbolicate you needed a binary with matching DSYM file. Is that not the case? Basically trying to figure out the magic of how Crashlytics symbolicates when all I do in my app is run the post-build script that uploads the DSYM
-
Just realized this may be a dup of http://stackoverflow.com/questions/28404342/ios-symbolicate-crash-report-without-the-app-binary . That Q remains unanswered though – stonedauwg Oct 21 '16 at 14:24
1 Answers
Mike from Fabric and Crashlytics here.
A dSYM file actually contains all the debug symbols of your app needed to symbolicate the crash report. This is why we recommend having your Debug_Information_Format
set to "Dwarf with dSYM". We also generate a unique build id so that even if the build and version number don't change, the dSYM uploaded for that build remains accurate for any crash reports that need to be symbolicated.
You can also read more information on this from Apple, but the most important part is this: "As the compiler translates your source code into machine code, it also generates debug symbols which map each machine instruction in the compiled binary back to the line of source code from which it originated. Depending on the Debug Information Format (DEBUG_INFORMATION_FORMAT) build setting, these debug symbols are stored inside the binary or in a companion Debug Symbol (dSYM) file."
As noted above, the symbols can be in just the dSYM file, hence our recommendation for the setting of Debug_Information_Format
.

- 16,181
- 3
- 61
- 77
-
Thanks @MikeBonnell, that all makes sense to me. However, still dont understand why XCode requires the binary AND dsym (linked Apple doc even specifies this) if atos command, and whatever you folks use to symbolicate, does not – stonedauwg Oct 21 '16 at 13:48
-
If you don't have Debug_information_format set to Dwarf with dSYM, then the debug symbols are included in the binary for debug related builds instead of in the separate dSYM file. – Mike Bonnell Oct 21 '16 at 14:02
-
I get that Dwarf w/dSYM results in symbols only in the dSYM. But if thats true, why does XCode need the binary (.app) file as well as the dSYM when Crashlytics only needs the dSYM? I read the man page for atos cmd and it seems to imply you need the binary along side the dSYM as well. Is it because Fabric is using a diff technique than XCode and atos? – stonedauwg Oct 21 '16 at 14:21