Unreal Engine Plugin
The symbol-upload step in this plugin is designed for developer evaluation only! Do not release builds with Client ID and Client Secret in DefaultEngine.ini. Instead, configure an explicit symbol-upload step as part of your production build pipeline.
🏗 Installation
You may choose to add BugSplat through the Unreal Marketplace or add the plugin to your Unreal project manually.
Install from Marketplace
Install BugSplat from the Unreal Marketplace
Install Manually
Navigate to your project folder containing your
[ProjectName].uprojectfile.Create a
Pluginsfolder if it does not already exist.Create a
BugSplatfolder in thePluginsfolder and copy the contents of this repo into theBugSplatfolder.In the Unreal Editor, ensure you can access the BugSplat plugin via
Edit > Project Settingsand scroll to theBugSplatsection underPlugins.
⚙️ Configuration
BugSplat's Unreal plugin currently supports adding crash reporting to Windows, macOS, Linux, Android, and iOS games. With a few clicks, the BugSplat plugin can be configured to automatically upload symbol files so crash report stack traces display function names and line numbers.
To get started, generate a Client ID and Client Secret via the Integrations page.
Next, open the BugSplat plugin menu in the Unreal Editor via Edit > Project Settings. Scroll to the BugSplat section of Project Settings and add values for Database, Application, Version, Client ID, and Client Secret:

Windows, macOS, and Linux
BugSplat leverages Unreal's CrashReportClient to provide crash reporting for Windows, macOS, and Linux games. Be sure to update your project settings and enable Include Crash Reporter and Include Debug Files in Shipping Builds:

To configure CrashReportClient to post to BugSplat, the DataRouterUrl value needs to be added to DefaultEngine.ini. The bugsplat-unreal plugin automatically updates the value for DataRouterUrl when the Update Engine DefaultEngine.ini option is enabled. Please note the DataRouterUrl value is global and is shared across all packaged builds created by the affected engine. To override the DataRouterUrl value a package build uses, you may optionally use the Update Packaged Game INI button under the Tools section.
In order to get function names and line numbers in crash reports, you'll need to upload your game's .exe, .dll, and .pdb files. To upload debug symbols for reach build, ensure that the Enable Automatic Symbol Uploads option is selected. When selected, a script to execute symbol-upload will be added to the PostBuildSteps field in BugSplat.uplugin. The symbol upload script will run automatically when your game is built.
macOS
To create a .dSYM file for a macOS build invoke RunUAT.command with the -EnableDSym flag per the example below:
../../../Engine/Build/BatchFiles/Mac/Build.sh -Project="../../my-unreal-crasher/MyUnrealCrasher.uproject" MyUnrealCrasher Mac Development -NoEditor -EnableDSym -TargetPath="~/Desktop/UnrealEngine"iOS and Android
Before attempting to use the BugSplat plugin to capture crashes on Mobile, please ensure you've completed the iOS and Android quickstart guides.
To enable crash reporting, ensure the Enable iOS Crash Reporting and Enable Android Crash Reporting options are selected. Also, ensure that Enable Automatic Symbol Uploads is checked so that your crash reports contain function names and line numbers.
iOS
The Unreal iOS project's build process includes a Build Phase called Generate dSYM for archive, and strip, which executes after the Unreal PostBuildSteps. However, this Build Phase must complete before the dSYM file (debug symbols) is generated. Due to this timing, BugSplat cannot upload the dSYM immediately during the initial build. Instead, BugSplat will upload the dSYM during the next incremental build in Xcode. Alternatively, you can follow the example in our bugsplat-apple repo to configure a custom Build Phase for symbol uploads.
To get function names and line numbers in your iOS crash reports, please make the following changes in the iOS section of Project Settings.
Generate dSYMs for code debugging and profiling
true
Generate dSYMs as a bundle for third-party crash tools
true
Support bitcode in shipping
false
Note that sometimes iOS applications won't crash while the USB cable is connected. If this happens, disconnect the USB cable and re-run the application to trigger a crash.
Android
Code is aggressively optimized when building for Android. Oftentimes, Unreal's build process optimizes away code that generates simple errors used in testing. To test a null pointer dereference, you can add the volatile keyword to work around compiler optimizations.
Fatal Errors on Android raise a SIGTRAP and require extra configuration so that they can be reported to BugSplat.
Xbox and PlayStation
BugSplat can provide instructions for implementing Unreal crash reporting on Xbox and PlayStation. Please email us at [email protected] for more info.
🏃 Usage
Once you've installed the plugin, add the following C++ snippet to your game to generate a sample crash.
UE_LOG(LogTemp, Fatal, TEXT("BugSplat!"));Run your application and submit a crash report.
On Desktops, submit a crash report via the Unreal CrashReportClient dialog that appears at crash time. We have developed a handy guide on how you can customize the Unreal CrashReportClient dialog that is available here.
On iOS, after a crash occurs, restart the game and tap the Send Report option when prompted. On Android, crashes are submitted automatically at crash time.
Once you've submitted a crash report, navigate to the Crashes page. On the Crashes page, click the link in the ID column.
If everything is configured correctly, you should see something that resembles the following:

🧑💻 Contributing
BugSplat ❤️s open source! If you feel that this package can be improved, please open an Issue. If you have an awesome new feature you'd like to implement, we'd love to merge your Pull Request. You can also send us an email, join us on Discord, or message us via the in-app chat on bugsplat.com.
Last updated
Was this helpful?
