Get readable crash reports in the Crashlytics dashboard

By default, Firebase Crashlytics automatically processes your debug symbol (dSYM) files to give you deobfuscated and human-readable crash reports. You usually configure this behavior during the initial setup of Crashlytics in your app, specifically by adding a run script that automatically uploads dSYM files during your app's build phase.

Unfortunately, there are a few cases that could cause your automatic dSYM files upload to fail. This guide provides some ways to troubleshoot when Crashlytics can't locate your app's dSYM files.

Make sure Xcode can automatically process dSYMs and upload the files

When setting up Crashlytics in your app, you configured a run script to automatically process dSYMs and upload the files.

Make sure that your configuration for the Crashlytics run script is up-to-date with the new requirements which started with Xcode 15. If your configuration isn't up-to-date, you might be getting the following error:
error: Info.plist Error Unable to process Info.plist at path ....

Specifically, Xcode 15 and later requires that you provide a more complete set of file locations. For your Crashlytics run script (firebase-ios-sdk/Crashlytics/run), make sure that you have the following setup:

  1. Click the Build Phases tab, and then expand the Run Script section.

  2. In the Input Files section, make sure you have the paths for the locations of the following files:

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
    $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
    $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

Check if Xcode is producing dSYMs

More often than not, dSYM files go missing because Xcode simply isn't producing them. When an upload fails, Crashlytics displays a "Missing dSYM" alert in the Firebase console. If you get this alert, first check that Xcode is producing the correct dSYM for every build:

  1. Open your project in Xcode, and then select the project file in the Xcode Navigator.

  2. Select your main build target.

  3. Open the target's Build Settings tab, and then click All.

  4. Search for debug information format.

  5. Set Debug Information Format to DWARF with dSYM File for all your build types.

  6. Rebuild your app.

Your crash reports should now appear in the Crashlytics dashboard. If the problem persists or you encounter other errors, try locating your dSYMs and uploading them to Crashlytics manually.

Locate your dSYMs on a local machine

Run the following command to display all your dSYMs' UUIDs on your machine and search for the missing dSYM:

mdfind -name .dSYM | while read -r line; do dwarfdump -u "$line"; done

Once you find the dSYM, manually upload it to Crashlytics. If the mdfind command doesn't return any results, you can look in the Products directory where your .app lives (by default, the Products directory is located in Derived Data). If your app is released to production, you can also look for its dSYM in the .xcarchive directory on disk:

  1. In Xcode, open the Organizer window, and then select your app from the list. Xcode displays a list of archives for your project.

  2. Control-click an archive to view it in Finder. Control-click it again, and then click Show Package Contents.

  3. Within .xcarchive is a dSYMs directory that contains dSYMs generated as part of Xcode's archiving process.

Upload your dSYMs

Crashlytics supports multiple ways to upload your dSYMs files, either automatically or manually.

(Recommended) Automatically process your dSYMs and upload the files

When you initially set up Crashlytics, you most likely configured this automatic upload behavior for your app. However, if automatic uploads are failing, check that your configuration is correct.

Manually upload your dSYM files

If automatic uploads are failing, you can manually upload your dSYM files using either of the following options.

  • Option 1: Use the console-based "Drag and Drop" option to upload a zip file containing your dSYM files (go to the Firebase console > Crashlytics > dSYMs tab).

  • Option 2: Use the upload-symbols script that you can call from anywhere in your build process to manually upload your dSYM files. To run the upload-symbols script, use either of the following options:

    • Option A: Include the following line in your build process:

      find dSYM_DIRECTORY -name "*.dSYM" | xargs -I \{\} $PODS_ROOT/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p PLATFORM \{\}
    • Option B: Run the script directly from your terminal:

      /PATH/TO/PODS/DIRECTORY/FirebaseCrashlytics/upload-symbols -gsp /PATH/TO/GoogleService-Info.plist -p ios /PATH/TO/dSYMs

    For usage notes and additional instructions about this script, run upload-symbols with the --help parameter.