How to upload missing dSYM file to Firebase Crashlytics

Karthick Selvaraj
3 min readJul 30, 2021

You might have integrated Firebase Crashlytics in your app to analyse the performance of your app and crashes in both staging and production environment. Assume your client or external tester is getting an unexpected crash in your app which you haven’t faced during the development phase. How can you identify the cause of the crash and fix it?

Logical mistakes can be reproduced based on your clients or testers inputs. But it’s really hard to debug and fix system-level causes, like thread misuse or some unknown cases. You can use Crashlytics to capture and fix these kind of unexpected crashes.

Crashlytics will automatically upload the dSYM(debug symbols file) file using a Run script which you should have added during Crashlytics configuration. Crashlytics uses the dSYM file to generate the crash report.

For some reasons, dSYM files might not be uploaded to the Crashlytics and you can see below error message in your crashlytics console.

In this case, Crashlytics can’t provide you with useful crash reports. You need to upload the missing dSYM file to get the crash report to understand what went wrong with your version.

You will be provided with steps to upload the missing dSYM files when you click the Upload dSYMs button in the alert in Crashlytics console. You can also see a table with UUID, Status and Crash count just below the upload steps. You will need to upload separate dSYM for each listed UUID in this list.

NOTE: You should have Xcode archived file in your local to proceed with below steps.

Follow below steps to upload your missing dSYM file,

  1. Copy the UUID from the missing dSYMs list in the Crashlytics console
  2. Open your project in the Xcode
  3. Open Xcode organiser, Window -> Organiser
  4. Select your app from the apps list on the left side
  5. Select the archived file by matching version and build number from missing dSYMs list in Crashlytics console
  6. Right-click the particular archived file and click Show in Finder. Now you can see your .xcarchive file in the finder.
  7. Select the file, Right-click -> Show Package Contents
  8. Select the dSYMs folder
  9. Find the dSYM file which is named as the copied UUID from the crashlytics in step 1. Copy and paste that particular file in your desktop for easy use.
  10. Go back to Xcode, expand Pods in your project.
  11. Select, FirebaseCrashlytics -> Right click -> Show in Finder
  12. You should see an executable file called upload-symbols. You will be using this to upload your missing dSYM which you just copied to the desktop.
  13. Go back to Xcode, select your GoogleService-Info.plist and get its path by Right click -> Show in Finder
  14. You need 3 paths, missing dSYM file’s path, upload-symbols file’s path and GoogleService-Info.plist file’s path.
  15. Form your upload command,
<Upload-symbol path> -gsp <GoogleService-Info.plist path> -p ios <missing dSYM file path>

Example: /Users/karthick/Desktop/SampleProject/Pods/FirebaseCrashlytics/upload-symbols -gsp /Users/karthick/Desktop/SampleProject/GoogleService-Info.plist -p ios /Users/karthick/Desktop/EEAA5588–1234–1234–1234–243322DDEE66.dSYM

Open the terminal and paste the command you just formed in above step and hit enter/return key. If you see a message, Successfully uploaded Crashlytics symbols, your dSYM file is uploaded

You should wait for 5 to 10 minutes to allow Crashlytics to process the uploaded dSYM file and generate the crash report. You can analyse and find the root cause of your crash and fix it as soon as your crash report is prepared.

Thanks! 👨🏻‍💻

--

--