Showing full stacktraces

BugSnag supports unminifying and demangling stacktraces using ProGuard files, NDK mapping files and LLVM debug symbol files (dSYMs) to show a full stacktrace with methods, file paths, and line numbers for JavaScript and native errors.

Android ProGuard and NDK mappings

As part of the Unreal Engine plugin installation, the BugSnag Android Gradle Plugin will be automatically added and configured to upload mappings files for your Android builds in Shipping configurations, so your Java and C stacktraces will be symbolicated without any further setup required. To disable automatically uploading mapping files, set “Auto Upload Symbol Files (Android only)” (bAutoUploadSymbolFiles) to false in Project Settings.

The API key must be specified in Project Settings to enable automatic upload of mapping files.

Using BugSnag On-premise

If you are using BugSnag On-premise, you will need to update the Endpoints section of the BugSnag plugin in Project Settings to match your server configuration. Configuring “Symbol Upload Endpoint” and “Releases Endpoint” are required for automatically uploading symbol files.

iOS debug symbol files (dSYMs)

For Shipping builds of your application, you will need to upload dSYM files to BugSnag in order for stack traces to show file, line and function information.

This procedure differs depending on whether you have enabled Bitcode in your app:

With Bitcode

If you have “Support bitcode in shipping” (bShipForBitcode) enabled in Project Settings → Platforms → iOS → Build, then the dSYM files available on your Mac will not contain the information needed to symbolicate crash reports.

Instead, dSYM files are generated by the App Store when your app is recompiled after upload and will need to be downloaded using Xcode or App Store Connect. To get started, download the dSYM ZIP archive using Xcode or App Store Connect. It may take time for the download to become available, as the App Store needs to recompile the your app.

The downloaded dSYM bundle can then be uploaded to BugSnag using bugsnag-dsym-upload, a script for validating and uploading your dSYM files, which is available for download using Homebrew or by downloading the source:

$ bugsnag-dsym-upload --api-key <apikey> <dsymfiles>.zip

If you are using BugSnag On-premise, you should supply your BugSnag Upload API endpoint by specifying the --upload-server option.

Without Bitcode

To generate the necessary symbol files, we recommend enabling both

  • “Generate dSYM file for code debugging and profiling” (bGeneratedSYMFile) and
  • “Generate dSYM bundle for third party crash tools” (bGeneratedSYMBundle)

in Project Settings → Platforms → iOS → Build (or in your Config/DefaultEngine.ini file).

After completing each app build, a dSYM bundle will be generated in the Binaries/IOS folder. This bundle can then be uploaded to BugSnag using bugsnag-dsym-upload, a script for validating and uploading your dSYM files, which is available for download using Homebrew or by downloading the source:

$ bugsnag-dsym-upload --api-key <apikey> Binaries/IOS/<bundlename>.dSYM

If you are using BugSnag On-premise, you should supply your BugSnag Upload API endpoint by specifying the --upload-server option.

Further information on Unreal Engine Build options

With the default settings, Shipping builds will generate a non-bundled dSYM file — the same result as when bGeneratedSYMFile is enabled but bGeneratedSYMBundle is not. This file is in fact the DWARF information that BugSnag requires for symbolication, and the file that is extracted by bugsnag-dsym-upload.

Should you wish to upload this file directly, you can use cURL:

curl --http1.1 \
    -F apiKey=<apikey> 
    -F dsym=@Binaries/IOS/<bundlename>.dSYM \
    https://upload.bugsnag.com/

macOS debug symbol files (dSYMs)

For Shipping builds of your application, you will need to upload dSYM files to BugSnag in order for stack traces to show file, line and function information.

After completing each app build, a dSYM file will be generated in the Binaries/Mac folder as long as bDisableDebugInfo has not been set to true in your target file (.Target.cs)

This file can then be uploaded to BugSnag using cURL:

curl --http1.1 \
    -F apiKey=<apikey> 
    -F dsym=@Binaries/Mac/<bundlename>.dSYM \
    https://upload.bugsnag.com/

Further reading

For further information see our iOS or macOS symbolication guides.