Analyzing Crash Reports

After you distribute your app for testing by using TestFlight or after you make it available on the App Store or Mac App Store, routinely download and analyze crash reports. When an app crashes, the system creates a crash log that describes the conditions under which the app terminated, in most cases including a complete stack trace for each executing thread. Apple provides a crash report service that collects and aggregates user crash logs. Crash reports are available for apps, WatchKit extensions, and other app extensions.

Alternatively, view crash logs directly on iOS devices or import crash reports, as described in Viewing and Importing Crashes in the Devices Window. For example, if you distribute your iOS and Mac app outside of the store, you can solicit crash reports directly from users and import them into Xcode.

About the Crash Report Service

Apple provides a service that allows you to download crash reports for the most recent app versions and builds that you distribute through the store. The service collects and groups similar crash logs into crash reports. Each build of an app may have multiple crash reports and each crash report may contain multiple crash logs. However, crash logs are not sent to Apple unless the user agrees to share crash data with app developers. TestFlight users automatically agree to share crash data. The service does the following to generate crash reports:

Xcode displays information about crash reports in the Crashes organizer:


Before Viewing Crash Reports

Perform all these steps to fully enable the crash report service. If you previously uploaded an app with symbols to iTunes Connect and distributed it using TestFlight or the store, you may already see crash reports in the Crashes organizer. If you do not see crash reports in the the Crashes organizer, verify that you have performed these steps.



In Xcode, enter an Apple ID in Accounts preferences that belongs to the Apple Developer Program, as described in Adding Your Apple ID Account in Xcode.


Set the version and build number, as described in Setting the Version Number and Build String. If you are distributing another build of your app, increment the build string.


Create a single app archive and upload it to iTunes Connect with symbols, as described in Uploading Your App to iTunes Connect. (Ensure that the “Include app symbols for your application…” box is checked before you click Submit.)

Do not delete archives that you upload to iTunes Connect.


In iTunes Connect, distribute the app to testers using TestFlight, as described in TestFlight Beta Testing (Optional), or submit the app for review, as described in Submitting the App to App Review.


On devices, users who download your app from the store need to agree to share crash data with app developers, as described in Sharing Crash Data with App Developers. (TestFlight users automatically agree to share crash data.)


In Xcode, to view crash reports, enter an Apple ID that is a team agent or admin, or an iTunes Connect user, as described in Adding Your Apple ID Account in Xcode.


In Xcode, to go from a stack frame in the Crashes organizer to the source code in debug navigator, open the Xcode project that you archived and uploaded to iTunes Connect.

Also, allow up to three days between when you first distribute your app and when crash reports appear in Xcode. To maintain a good user experience, crash data is sent from user devices to Apple when the user allows.

Viewing Crash Reports in the Crashes Organizer

The Crashes organizer displays crash reports for all the apps developed by all your teams.

To view crash reports

  1. In the organizer, click Crashes.

  2. In the left column, select an app or local archive from the list.

    The list of apps is obtained from iTunes Connect and includes information about every version and build you uploaded to iTunes Connect.

  3. At the top of the second column, choose a version and build from the pop-up menu.

    Xcode begins refreshing the crash reports for the version and build you select. Xcode downloads the top 25 crash reports—crash reports with the most number of occurrences on unique devices—that occurred during the past two weeks.

  4. In the second column, select a crash report.

    The title of the crash report defaults to the stack frame where the crash likely occurred. The number of unique device occurrences of the crash appears below the crash title. Crash reports for a WatchKit extension are denoted with a watch icon (../Art/app_extension_watch_icon.shot/Resources/shot_2x.png) and crash reports for other app extensions are denoted with a puzzle icon (../Art/app_extension_icon.shot/Resources/shot_2x.png).

  5. In the detail area, view the crash logs.

    The detail area displays the stack trace for each thread. The stack frame where the crash occurred is highlighted in orange.

  6. In the inspector, add information and view statistics about a crash report.

Viewing and Finding Crash Reports

In the crash report list, perform these actions:


In the detail area, perform these actions:

Editing Information About Crash Reports

As you resolve issues, you can store information about crash reports locally.

In the crash report list, perform these actions:

In the detail area, perform this action:


In the inspector, perform this action:

Opening the Source Code in the Debug Navigator

In the detail area, perform these actions:

In the inspector, perform this action:


Xcode opens the associated project and displays the line of code in the debug navigator.


Viewing Statistics About Crash Reports

View the crash data over the past two weeks by device type, operating system, and date. To change the device type, choose Device Type from the pop-up menu. To change the operating system, choose Operating System from the pop-up menu.


Sharing Crash Data with App Developers

Apple can’t provide crash reports if users don’t share the crash data with app developers. If a user reports a crash and you don’t have a corresponding crash report, ask the user to share the crash data with app developers. Crash data is automatically sent to Apple for TestFlight apps but not apps the user downloads from the App Store.

Give these instruction to users. On both iOS and OS X, the crash data option is in the Diagnostics & Usage section of the Privacy settings.

To share crash data with iOS developers

  1. In Settings, tap Privacy.

  2. Scroll to the bottom and tap Diagnostics & Usage.

  3. If necessary, tap the Share With App Developer switch to enable it.

Similarly, ask Mac users to share their crash data with app developers.

To share crash data with Mac developers

  1. In System Preferences, click Security & Privacy.

  2. Click Privacy and in the left column, click Diagnostics & Usage.

  3. Select “Share crash data with app developers.”

    To enable the Privacy options, click the lock icon. In the dialog that appears, enter the credentials for a system account with admin privileges and click Unlock.

Viewing and Importing Crashes in the Devices Window

In the Devices Window, you can view details about a crash log directly on a device or import crash reports you receive from other sources. If you keep the archive of your app (that includes the matching binary and .dSYM file), Xcode automatically symbolicates imported crash reports. Xcode replaces the memory addresses in the crash log with human-readable function names and line numbers. Then you can view the stack trace for each execution thread.

For this reason, do not delete archives that you export and distribute for testing. For example, if you distribute your iOS app using ad hoc provisioning (Exporting Your App for Testing (iOS, watchOS)) or Mac app using a team provisioning profile (Exporting Your App for Testing (Mac)), you can import unsymbolicated crash reports you receive from testers.

You can also download unsymbolicated crash reports from iTunes Connect for apps released through the App Store or Mac App Store. In this case, download the .dSYM file before importing the crash report. In the Archives organizer, select the archive and click the Download dSYMs button. Xcode will insert the .dSYM file in the selected archive.

To view device crash logs or import a crash report

  1. Choose Window > Devices.

  2. If necessary, connect your iOS device to your Mac.

  3. Select the device under Devices, and click the View Device Logs button.


    A sheet appears displaying the crash logs on the device.

  4. To view a crash log, select it in the left column.

    View the crash log in the detail view on the right.

  5. To import a crash report, drag the crash report from the Finder to the left column of the sheet.

  6. Click Done.

Reproducing Crashes in Xcode

Make sure to test the exact same build that crashed. Save all the archives that you distribute for testing or upload to iTunes Connect. Verify that the archive in Xcode matches the crash report by comparing the build and version numbers. Follow these same steps to determine if you’re testing the same build that you submitted to the store.

For Mac apps, to reproduce a crash, use a guest account with a fresh install of the version of OS X that matches the crash report. Don’t attempt to recreate a crash using a developer or admin system account, because the problems you want to analyze may not occur.