Symbolication

Overview

Symbolicating the crash reports into a human-readable format is essential for any developer to understand the reason behind the crash quickly. 

What is a dSYM file?

A dSYM file is a debug symbol file generated by Apple Xcode and has all the debugging information for the particular crash. They are useful for re-symbolicating crash reports. 

Apptics automatically processes your dSYM files to give you human-readable crash reports.

If the dSYM upload fails because of unique project configurations or bitcode in your app, you can upload the dSYM file manually in the Apptics console.

Check if Xcode is producing dSYM files:

  • Open your project in Xcode and select the project file in the Xcode navigator.
  • Select your main build target from the Select Project or target dropdown.
  • Open the target's build settings tab.
  • Click All near the top of the tab.
  • Search for 'debug formation format'.
  • Set Debug information format to DWARF with dSYM file.
  • Build your app again and check the Apptics console to see if the dSYM is uploaded.

Logs aren't symbolicated

  • If the logs aren't symbolicated in the crashes, choose one of the below options to provide the symbols needed to symbolicate the crash.

Option 1: Finding the .dSYM on your Mac.

  • Locate your application's .xcarchive file in the finder.
  • Right-click the .xcarchive file in the finder and select show package contents.
  • You will see a folder named dSYMs that contains the dSYM bundle.
  • Zip this directory and upload it to the Apptics server on the manage dSYM page.

Option 2: Download dSYMs using Xcode organizer.

  • Follow the below steps and download the dSYM files from the Xcode organizer.

  • Open the Organizer window from the Xcode menu.
  • Select Archives in the Products section in the organizer window.
  • Click download debug symbols from the details tab on the right.
  • Zip this directory and upload it on the Manage dSYM page in the Apptics console.

Option 2: Download the symbols from iTunesConnect for your bitcode enabled apps.

  • After you create an archive and upload your app to iTunes Connect, it will be processed by Apple. To get the correct version of your app dSYM from the AppStore, you can use the Xcode Archives Organizer or log in to iTunes Connect.

  • Follow the below steps to download the dSYM files for bitcode enabled version from the iTunes Connect portal.
    1. Log in to Apple iTunes Connect.
    2. Select My Apps > (selected app) > Activity.
    3. From the list of builds for your application, select the build number you need for the dSYM.
    4. Click Download dSYM.
    5. Zip this directory and upload it to the Apptics server on the Manage dSYM page.

Upload dSYM in Apptics

  • Navigate to Quality > dSYM > Mange dSYM.
  • Click Upload dSYM File and a pop-up will appear on the screen.

  • Select your App version from the drop-down menu.
  • Click on Choose File and select the dSYM file you want to upload.
  • Click Upload and the new dSYM file will be uploaded.

NOTE: When multiple builds of the same version are uploaded to the AppStore, multiple dSYM files will be uploaded to the apptics server. In that case, the developer can choose which dSYM should be used to symbolicate the crashes arriving from the released version (by default, the latest dSYM file will be chosen).

Troubleshooting unsymbolicated crash reports

If the crashes are still unsymbolicated after uploading proper symbols, it might be because the uploaded dSYM files don't match the app version of the crash report.

You can make sure whether your dSYM files have the UUIDs that match with the UUIDs of your crash reports by using a command called dwarfdump.

  1. To find the UUID in the dSYM file:

    dwarfdump -u YourApplication.app.dSYM
     
  2. It should print something like this:

    UUID: 331EB9D3-5C70-3143-80BF-8D5B5FC394BC (armv7)YourApplication.app.dSYM/Contents/Resources/DWARF/YourApplication UUID: 7071835B-8205-3DDC-ACC5-67E60740F27A (arm64)YourApplication.app.dSYM/Contents/Resources/DWARF/YourApplication
     
  3. Check if the UUID printed in the terminal matches the UUIDs of your application binary which you can find under the "Binary Inages" section of the crash report.

Binary Images:      
0x100a04000 -        0x10193bfff +YourApplication arm64  <7071835b82053ddcacc567e60740f27a> /private/var/containers/Bundle/Application/FCEBD58B-724E-477E-890A-D27E438A1D20/YourApplication.app/YourApplication