Your app's dSYM files are stored in Xcode's dSYM archive path folder. This is the folder where the iOS agent gets the dSYM files that are used to symbolicate your crash reports. New Relic provides a post-build script as part of the iOS agent's install process. This script automatically converts your dSYM to the New Relic map file format and uploads the files needed for crash symbolication to New Relic.
A Swift script is included with the iOS agent that is intended to be run from a build script in your target's build phases in Xcode. The script automatically uploads dSYM files in the background (or converts your dSYM to the New Relic map file format), and then performs a background upload of the files needed for crash symbolication to New Relic.
In Xcode 14 Apple changed the default setting on newly created projects to disable bitcode. The App Store now only accepts app submissions with bitcode turned off. See Xcode 14 release notes. If your project still has bitcode enabled you must disable it. The automatic script requires bitcode to be disabled.
Apple generates dSYM files for Bitcode-enabled apps. You must download the dSYM files for Bitcode-enabled apps from Apple and upload them to New Relic through the mobile monitoring UI.
In New Relic iOS agent version 7.4.0 we introduced a new symbol upload script which uses Swift. The Python version of the symbol upload script is still available but will be removed in a future release. With the New Relic iOS agent version 7.3.8, the python version of the automatic script uses Python 3. If you use macOS 12.3 macOS 12.3 (Monterey), Python 3 will be installed by default with Xcode. But if you use the python automatic script on macOS 12.2 or before, you may need to manually install Python 3.
When a Bitcode-enabled app is uploaded to Apple for App Store review or ad-hoc distribution, dSYMs need to be manually downloaded from Apple and uploaded to New Relic to allow the mobile crash reports to be properly symbolicated. These dSYMs can be downloaded through the archives organizer in Xcode within several minutes of uploading the app. In this situation follow the procedures to find the archive and download dSYMs.
If an app is missing a dSYM file, you'll see three indicators in the mobile monitoring UI:
- Banner notification: A banner warning appears on the Crash report page. The warning reads:
We were unable to locate your dsym.
- Upload prompt: From the Crash type summary page you will be automatically prompted to upload a dSYM file if it is missing.
- Machine code: The crash stack trace on the Crash report page displays machine code and not a human-readable error message.
You can easily upload your dSYM files directly from the New Relic UI. The maximum file size is 600 MB. To upload your dSYM files:
- Go to one.newrelic.com > All capabilities > Mobile. Then select your app from the list.
- View Crash analysis.
- Select a specific crash from the Crash types list.
- Click Upload dSYM. You can either drag and drop your dSYMs directly, or select the file from your computer.
In some circumstances, New Relic's automatic upload of dSYM files may fail. If the dSYM upload fails, it creates an
upload_dsym_results file. For example, if there's a network failure and the dSYM upload isn't completed,
upload_dsym_results will contain a log of what went wrong. For additional information about how New Relic handles dSYM uploads, see New Relic's Online Technical Community.
If the automatic upload fails, you can manually upload your dSYM file. If you have multiple dSYM files, they can be within a single zip with a maximum file size of 600 MB. The
YOUR_NEW_RELIC_APPLICATION_TOKEN value in the commands below is the same key used for
+[NewRelic startWithApplicationToken:] (in Objective-C) or
NewRelic.start(withApplicationToken:) (in Swift).
To manually upload your dSYM files:
The automatic script will create an
upload_dsym_results.log file in your project's root directory, which contains information about any failures that occur during symbol upload.
If dSYM files are missing, you may need to check Xcode build settings to ensure the file is being generated. Frameworks which are built locally have separate build settings and may need to be updated as well.
Debug Information Format : Dwarf with dSYM FileDeployment Postprocessing: YesStrip Linked Product: YesStrip Debug Symbols During Copy : Yes