Inapptics SDK captures all crashes that happen in the app. Initially, a crash contains not so relevant hex numbers and file addresses.
In order to convert those into readable functions and file names, the crash needs to be symbolicated.
Inapptics will try to do this on device, but, depending on your app's project configurations, this might not be possible. In that case Inapptics will need special files related to the build version on which the crash occurred. Those are dSYMs.
If there is a crash in your dashboard that is not symbolicated, you will see an "Upload dSYM file" button in its detail page.
The trickiest part about symbolication is that you should provide the exact dSYM that was generated during build process of the app on which the crash occured.
Each crash has a UUID. It is an identifier generated for the crash depending on app build type and device architecture. Crashes and dSYMs are associated with each other with the help of UUIDs.
A single dSYM may contain symbols for several crashes with different UUIDs.
So, when looking for a missing dSYM to be attached to a crash, you need to find the one that supports the exact UUID of the crash.
When you click the "Upload dSYM file" button, a popup shows up. It will show the UUID of that particular crash, that you need to look for in dSYMs.
Note: If you open the popup from crash list page, there will be no UUID info. That is because uploading a dSYM from that page will find matching crashes automatically.
And even if there is no match, it will still keep the dSYM for matching future crashes.
During development process you might want to find a dSYM for an app that was built on your local computer. There are several ways to find correct dSYMs.
Run the following command in terminal, assuming that you know the crash uuid. It will look for the dSYM matching provided UUID and output its location if found.
mdfind "com_apple_xcode_dsym_uuids == YOUR_UUID"
Note: If the
mdfindcommand fails to find anything, you should look for dSYMs manually. The locations will be different for each project, depending on its build configuration. Possible locations are discussed below.
When running an app in XCode, it compiles the code and saves the built app along with dSYMs in a special folder. The folder location depends on build configuration.
Open your project with XCode. Locate the Products folder in project navigator on the right. Control-click on Products and select Show in Finder. This will open the folder where your app and its latest dSYM are located.
Important: You should have the dSYM generation turned on for your scheme in build settings in order to have them created.
Go to Build Settings and make sure the "Debug Information Format" value is set to "DWARF with dSYM" for your scheme.
If you are looking for a dSYM for a project archive, you can locate it through XCode's Organizer Window (Window -> Organizer). Once there, select your app on the left and find the desired archive from the list.
Control-click on the archive and select Show in Finder. It will bring up an
xcarchive file. Control-click on it and select Show Package Contents. There you will find a folder named dSYMs that will contain any dSYMs generated for your app during the Archive process.
For Bitcode enabled builds that are uploaded to the iTunes or TestFlight Apple generates new dSYMs. There are 2 ways to get those dSYMs.
Open XCode's Organizer Window (Window -> Organizer) and select your app from the left. Locate the archive that corresponds to the Bitcode release. Click on "Download dSYMs..." button. XCode will connect to your iTunes Connect accont and download and insert the dSYMs inside the
xcarchive. It will automatically open the folder containing downloaded dSYMs.
If XCode failed to download dSYMs for some reason, you can get them directly from iTunes Connect.
Log in to your iTunes Connect account, select "My Apps" from top dropdown and go to "Activity" tab. Choose the build you are looking the dSYMs for and click on "Download dSYM" button
In some cases you might want to double check if your dSYM is the one you were looking for. Meaning that it really does match with the UUID.
Here is a command that outputs all UUIDs bundled in specified dSYM:
dwarfdump -u YOUR_DSYM_PATH
When you have found the dSYMs you want to upload, you can click on the "Upload dSYM" button either on crash list or crash detail page. It will open a popup where you can drag and drop the file. Press the "Upload" button in order to proceed.
Important: As dSYM files are actually folders, the uploader will not accept direct dSYM files. You should archive them and upload a
Note: It is possible to upload multiple dSYMs compressed in a single
zip. The system will extract all the dSYMs inside and attach them to their corresponding crashes.
Matching dSYMs with crashes and symbolicating them may take some time. Refresh the crash page after a few seconds to see if the process is finished.
When symbolication is over you will see the difference immediately. The ugly hex numbers will be replaced with correct file and function names.