From 463b14ccc361aed214229ff971fb7f88989d0976 Mon Sep 17 00:00:00 2001 From: Quentin Sellem Date: Thu, 2 Jul 2026 19:28:08 -0400 Subject: [PATCH] [RUM] Document manual debug symbol upload (UI and API) Customers can now upload debug symbols / source maps manually from the Debug Symbols page in the Datadog UI, or via the public source map upload API, in addition to automated CI/CD upload. Adds this as an alternative upload path across the RUM error-tracking docs (browser, iOS, Android, Flutter, React Native, Expo, Unity, C/C++), the debug-symbols guide, the JS source maps guide, and the Error Tracking hub. Documents native ELF (Linux) and PE/PDB (Windows) symbol formats for the C++ SDK. Co-Authored-By: Claude Sonnet 4.6 --- .../en/error_tracking/frontend/mobile/android.md | 10 +++++++++- content/en/real_user_monitoring/_index.md | 4 ++++ .../browser/build_plugins/_index.md | 4 ++++ .../browser/build_plugins/source_code_context.md | 4 +++- .../browser/build_plugins/source_maps.md | 7 +++++++ .../application_monitoring/cpp/error_tracking.md | 15 ++++++++++++++- .../flutter/error_tracking.md | 6 ++++++ .../react_native/error_tracking.md | 5 +++++ .../react_native/setup/codepush.md | 4 ++++ .../unity/error_tracking.md | 5 +++++ .../real_user_monitoring/error_tracking/_index.md | 8 +++++++- .../error_tracking/mobile/expo.md | 3 +++ .../error_tracking/mobile/flutter.md | 5 +++++ .../error_tracking/mobile/ios.md | 8 ++++++++ .../error_tracking/mobile/reactnative.md | 5 +++++ .../real_user_monitoring/guide/debug-symbols.md | 8 +++++--- .../guide/upload-javascript-source-maps.md | 10 ++++++++++ 17 files changed, 104 insertions(+), 7 deletions(-) diff --git a/content/en/error_tracking/frontend/mobile/android.md b/content/en/error_tracking/frontend/mobile/android.md index 3c7144fb394..d9be4e2aaf1 100644 --- a/content/en/error_tracking/frontend/mobile/android.md +++ b/content/en/error_tracking/frontend/mobile/android.md @@ -566,6 +566,13 @@ The Android Gradle plugin automates the mapping file upload process. After confi **Note**: Re-uploading a mapping file does not override the existing one if the version has not changed. For information about file size limitations and other constraints, see the [Limitations](#limitations) section. +#### Upload manually + +You can also upload ProGuard/R8 mapping files and NDK symbol files manually, without the Gradle plugin. This is useful for one-off uploads or pipelines that do not run the plugin: + +- From the Datadog UI, on the [RUM Debug Symbols][24] page. +- Through the [public API][26]. + #### Run the upload tasks After configuring the plugin, run the Gradle tasks to upload your Proguard/R8 mapping file and NDK symbol files to Datadog: @@ -947,4 +954,5 @@ val inputStream = context.getRawResAsRumResource(id) [22]: https://github.com/DataDog/dd-sdk-android-gradle-plugin [23]: https://app.datadoghq.com/organization-settings/api-keys [24]: https://app.datadoghq.com/source-code/setup/rum -[25]: /real_user_monitoring/application_monitoring/android/setup/#track-background-events \ No newline at end of file +[25]: /real_user_monitoring/application_monitoring/android/setup/#track-background-events +[26]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ \ No newline at end of file diff --git a/content/en/real_user_monitoring/_index.md b/content/en/real_user_monitoring/_index.md index faefc7468b0..9a7afede2c5 100644 --- a/content/en/real_user_monitoring/_index.md +++ b/content/en/real_user_monitoring/_index.md @@ -232,6 +232,8 @@ View your [backend traces, logs, and infrastructure metrics][5] down to the exac Get automated alerts on outliers and groups of errors, timeouts, and crashes to significantly reduce your MTTR with [Error Tracking][6]. +To get readable stack traces, upload debug symbols and source maps automatically through CI/CD, manually from the [Debug Symbols][22] page in Datadog, or programmatically using the [source map upload API][23]. + {{< img src="real_user_monitoring/error_tracking/errors_rum.mp4" alt="RUM error tracking" video=true >}} ### Web and mobile vitals @@ -303,3 +305,5 @@ You must have edit access to restore general access to a restricted application. [19]: /real_user_monitoring/correlate_with_other_telemetry/profiling [20]: /real_user_monitoring/guide/proxy-rum-data [21]: /integrations/content_security_policy_logs +[22]: https://app.datadoghq.com/source-code/setup/rum +[23]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/_index.md b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/_index.md index 469fd99d14b..45c10bc72ac 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/_index.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/_index.md @@ -18,6 +18,8 @@ Datadog build plugins integrate with your JavaScript bundler to automate common Build plugins are complementary to the RUM Browser SDK. You still need to configure the SDK as described in the [Browser Monitoring Setup][1]. +If a build plugin does not fit your workflow, you can also upload source maps manually from the [Debug Symbols][2] page in Datadog or with the [Upload Source Maps API][3]. + ## Installation Install the Datadog build plugin package for your bundler: @@ -170,3 +172,5 @@ datadogWebpackPlugin({ {{< partial name="whats-next/whats-next.html" >}} [1]: /real_user_monitoring/application_monitoring/browser/setup/ +[2]: https://app.datadoghq.com/source-code/setup/rum +[3]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context.md b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context.md index d5853cb7979..b24880dc233 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context.md @@ -26,7 +26,7 @@ At build time, the plugin injects a snippet that writes metadata to `window.DD_S ## Prerequisites -- Source maps uploaded to Datadog, either through the [Source Maps build plugin][3] or [manually][2]. +- Source maps uploaded to Datadog, either through the [Source Maps build plugin][3] or manually. You can upload manually with the [datadog-ci CLI][2], from the [Debug Symbols][5] page in Datadog, or with the [Upload Source Maps API][6]. - The RUM SDK initialized with matching `service` and `version` parameters. - The Datadog build plugin installed and registered with your bundler. See [Build Plugins][4] for installation instructions. @@ -80,3 +80,5 @@ module.exports = { [2]: /real_user_monitoring/guide/upload-javascript-source-maps [3]: /real_user_monitoring/application_monitoring/browser/build_plugins/source_maps [4]: /real_user_monitoring/application_monitoring/browser/build_plugins/ +[5]: https://app.datadoghq.com/source-code/setup/rum +[6]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_maps.md b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_maps.md index 4b8e773e628..3d7acca8252 100644 --- a/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_maps.md +++ b/content/en/real_user_monitoring/application_monitoring/browser/build_plugins/source_maps.md @@ -13,6 +13,9 @@ further_reading: - link: 'https://github.com/DataDog/build-plugins' tag: 'Source Code' text: 'Datadog Build Plugins GitHub Repository' +- link: 'https://docs.datadoghq.com/api/latest/rum/upload-source-maps/' + tag: 'API' + text: 'Upload Source Maps API' --- ## Overview @@ -21,6 +24,8 @@ The Source Maps build plugin automatically uploads JavaScript source maps to Dat The plugin hooks into the build process, discovers all `.js` files with corresponding `.map` source map files from the build output, and uploads them to Datadog with git metadata. +If a build plugin does not fit your workflow, you can also upload source maps manually: from the [Debug Symbols][6] page in Datadog, or with the [Upload Source Maps API][7]. + ## Prerequisites - A Datadog API key, set with `auth.apiKey` or the `DATADOG_API_KEY` environment variable. @@ -82,3 +87,5 @@ To also display inline source code in Error Tracking stack traces, pair source m [3]: /real_user_monitoring/guide/upload-javascript-source-maps#instrument-your-code [4]: /real_user_monitoring/application_monitoring/browser/build_plugins/ [5]: /real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context +[6]: https://app.datadoghq.com/source-code/setup/rum +[7]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/cpp/error_tracking.md b/content/en/real_user_monitoring/application_monitoring/cpp/error_tracking.md index 2ff1583ad01..9c75c2b8e63 100644 --- a/content/en/real_user_monitoring/application_monitoring/cpp/error_tracking.md +++ b/content/en/real_user_monitoring/application_monitoring/cpp/error_tracking.md @@ -132,7 +132,19 @@ set(DD_CRASH_MODE "noop" CACHE STRING "") ### Symbolication -To get human-readable function names and line numbers in your crash reports, upload your application's debug symbols to Datadog. See [RUM Debug Symbols][4] for setup instructions. +Crash reports are captured with memory addresses rather than function names and line numbers. To get human-readable stack traces in Error Tracking, upload your application's debug symbols to Datadog. + +The C++ SDK supports the following debug symbol formats: + +- **Linux**: ELF symbol files +- **Windows**: PE/PDB symbol files + +You can upload debug symbols in either of the following ways: + +- **Manually from the Datadog UI**: Upload your symbol files on the [Debug Symbols][4] page. +- **Programmatically through the API**: Use the [Source Maps API][6] to automate uploads, for example from a CI/CD pipeline. + +See [RUM Debug Symbols][4] for setup instructions. ## Test your implementation @@ -168,3 +180,4 @@ RaiseException(EXCEPTION_ACCESS_VIOLATION, 0, 0, NULL); [3]: /real_user_monitoring/application_monitoring/cpp/setup [4]: https://app.datadoghq.com/source-code/setup/rum [5]: /real_user_monitoring/application_monitoring/cpp/advanced_build_configuration +[6]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/flutter/error_tracking.md b/content/en/real_user_monitoring/application_monitoring/flutter/error_tracking.md index a7b40cfb243..04fa7b6769f 100644 --- a/content/en/real_user_monitoring/application_monitoring/flutter/error_tracking.md +++ b/content/en/real_user_monitoring/application_monitoring/flutter/error_tracking.md @@ -65,6 +65,10 @@ datadog-ci flutter-symbols upload --service-name --dart-symb For a full list of options, see the `datadog-ci` [Flutter Symbols documentation][6]. +### Upload symbol files manually + +You can also upload symbol files manually, without the Datadog CLI. This is useful for one-off uploads or CI pipelines that don't use `datadog-ci`. Upload symbol files from the [{{< ui >}}Debug Symbols{{< /ui >}}][11] page in Datadog, or programmatically through the [source maps API][12]. + ## Advanced configuration - flavors and build numbers Datadog uses the combination of the `service-name`, `version`, and `flavor` to locate the correct symbols for deobfuscation, so the parameters sent to the `datadog-ci` command and the parameters set in [DdSdkConfiguration][7] @@ -96,3 +100,5 @@ Note that Datadog uses tags for versions which do not allow `+`. All tooling aut [8]: https://docs.flutter.dev/deployment/flavors [9]: https://pub.dev/documentation/datadog_flutter_plugin/latest/datadog_flutter_plugin/DatadogConfiguration/flavor.html [10]: https://pub.dev/documentation/datadog_flutter_plugin/latest/datadog_flutter_plugin/DatadogConfiguration/version.html +[11]: https://app.datadoghq.com/source-code/setup/rum +[12]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/react_native/error_tracking.md b/content/en/real_user_monitoring/application_monitoring/react_native/error_tracking.md index 2e185ae294c..00fd9b48ba6 100644 --- a/content/en/real_user_monitoring/application_monitoring/react_native/error_tracking.md +++ b/content/en/real_user_monitoring/application_monitoring/react_native/error_tracking.md @@ -124,6 +124,10 @@ When the SDK is initialized with a version suffix, you must manually override th See the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][16] page to view all uploaded symbols. +### Upload source maps manually + +In addition to the build-tool flows described above, you can upload source maps manually from the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][16] page, or programmatically through the [source maps upload API][19]. + ## Limitations Source maps and mapping files are limited in size to **500 MB** each, while dSYM files can go up to **2 GB** each. @@ -514,3 +518,4 @@ if (project.tasks.findByName("minify${variant.name.capitalize()}WithR8")) { [16]: https://app.datadoghq.com/source-code/setup/rum [17]: https://github.com/DataDog/datadog-ci/tree/master/packages/base/src/commands/react-native#inject-debug-id [18]: /error_tracking/frontend/mobile/expo/ +[19]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/react_native/setup/codepush.md b/content/en/real_user_monitoring/application_monitoring/react_native/setup/codepush.md index 845c177160a..0c92305f30d 100644 --- a/content/en/real_user_monitoring/application_monitoring/react_native/setup/codepush.md +++ b/content/en/real_user_monitoring/application_monitoring/react_native/setup/codepush.md @@ -138,6 +138,8 @@ To run it with Yarn: yarn datadog-ci react-native codepush --platform ios --service com.company.app --bundle ./build/CodePush/main.jsbundle --sourcemap ./build/CodePush/main.jsbundle.map --app MyOrganization/MyApplication --deployment MyDeployment ``` +You can also upload source maps manually from the [RUM Debug Symbols][7] page, or programmatically through the [source maps upload API][8]. + ## Alternatives These steps ensure that the `version` matches the format `{commercialVersion}-codepush.{codePushLabel}`, such as `1.2.4-codepush.v3`. @@ -176,3 +178,5 @@ This means that even if users open your application while offline, no data is lo [4]: https://github.com/microsoft/react-native-code-push/blob/master/docs/api-js.md#codepushgetupdatemetadata [5]: https://github.com/DataDog/datadog-ci/tree/master/packages/datadog-ci/src/commands/react-native#upload [6]: https://github.com/DataDog/dd-sdk-reactnative-examples/tree/main/rum-react-navigation-codepush +[7]: https://app.datadoghq.com/source-code/setup/rum +[8]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/application_monitoring/unity/error_tracking.md b/content/en/real_user_monitoring/application_monitoring/unity/error_tracking.md index 0a8e65f9a77..6370794032e 100644 --- a/content/en/real_user_monitoring/application_monitoring/unity/error_tracking.md +++ b/content/en/real_user_monitoring/application_monitoring/unity/error_tracking.md @@ -76,6 +76,10 @@ datadog-ci unity-symbols upload --android For a full list of options, see the `datadog-ci` [Unity Symbols documentation][5]. +### Upload symbol files manually + +You can also upload symbol files (dSYMs, `.so`, Android Proguard Mapping, and IL2CPP mapping files) manually from the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][6] page or through the [API][7]. This is useful for one-off builds or environments without CI. + ### List uploaded symbol files See the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][6] page to view all uploaded symbols. @@ -111,3 +115,4 @@ To verify your Unity Crash Reporting and Error Tracking configuration, issue an [4]: https://www.npmjs.com/package/@datadog/datadog-ci [5]: https://github.com/DataDog/datadog-ci/tree/master/packages/datadog-ci/src/commands/unity-symbols [6]: https://app.datadoghq.com/source-code/setup/rum +[7]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/error_tracking/_index.md b/content/en/real_user_monitoring/error_tracking/_index.md index c30ceac5137..644dc9704b3 100644 --- a/content/en/real_user_monitoring/error_tracking/_index.md +++ b/content/en/real_user_monitoring/error_tracking/_index.md @@ -48,10 +48,16 @@ Take a tour of key Error Tracking features in the [Error Tracking Explorer][3] d {{< nextlink href="real_user_monitoring/error_tracking/maui" >}}.NET MAUI{{< /nextlink >}} {{< /whatsnext >}} +### Upload debug symbols + +Debug symbols and source maps are uploaded automatically through your CI/CD pipeline. You can also upload them manually from the [Debug Symbols][4] page in Datadog, or programmatically using the [source map upload API][5]. Manual and API-based uploads are useful for backfilling symbols or for pipelines that cannot run the Datadog CLI. + ## Further Reading {{< partial name="whats-next/whats-next.html" >}} [1]: https://app.datadoghq.com/rum/error-tracking [2]: /real_user_monitoring/ -[3]: /error_tracking/explorer \ No newline at end of file +[3]: /error_tracking/explorer +[4]: https://app.datadoghq.com/source-code/setup/rum +[5]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ \ No newline at end of file diff --git a/content/en/real_user_monitoring/error_tracking/mobile/expo.md b/content/en/real_user_monitoring/error_tracking/mobile/expo.md index 880438a307f..f667e83b897 100644 --- a/content/en/real_user_monitoring/error_tracking/mobile/expo.md +++ b/content/en/real_user_monitoring/error_tracking/mobile/expo.md @@ -150,6 +150,8 @@ If you are using EAS to build your Expo application, set `cli.requireCommit` to See the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][4] page to view all uploaded symbols. +In addition to the `expo-datadog` config plugin, source maps and dSYMs can be uploaded manually from the [{{< ui >}}RUM Debug Symbols{{< /ui >}}][4] page, or programmatically through the [source maps upload API][6]. + ## Limitations Source maps and mapping files are limited in size to **500 MB** each, while dSYM files can go up to **2 GB** each. @@ -244,3 +246,4 @@ If you are using the `expo-dev-client` and already have the `expo-datadog` plugi [3]: /real_user_monitoring/application_monitoring/react_native/setup/expo/#usage [4]: https://app.datadoghq.com/source-code/setup/rum [5]: https://github.com/DataDog/datadog-ci/blob/master/packages/datadog-ci/src/commands/react-native/README.md#inject-debug-id +[6]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/error_tracking/mobile/flutter.md b/content/en/real_user_monitoring/error_tracking/mobile/flutter.md index 1e5b2a1b0a0..58db9492c05 100644 --- a/content/en/real_user_monitoring/error_tracking/mobile/flutter.md +++ b/content/en/real_user_monitoring/error_tracking/mobile/flutter.md @@ -107,6 +107,10 @@ datadog-ci flutter-symbols upload --service-name --dart-symb For a full list of options, see the `datadog-ci` [Flutter Symbols documentation][5]. +#### Upload symbol files manually + +You can also upload symbol files manually, without the Datadog CLI. This is useful for one-off uploads or CI pipelines that don't use `datadog-ci`. Upload symbol files from the [{{< ui >}}Debug Symbols{{< /ui >}}][10] page in Datadog, or programmatically through the [source maps API][11]. + ### List uploaded symbol files See the [RUM Debug Symbols][10] page to view all uploaded symbols. @@ -163,3 +167,4 @@ datadog-ci flutter-symbols upload --service-name --dart-symb [8]: https://pub.dev/documentation/datadog_flutter_plugin/latest/datadog_flutter_plugin/DatadogConfiguration/flavor.html [9]: https://pub.dev/documentation/datadog_flutter_plugin/latest/datadog_flutter_plugin/DatadogConfiguration/version.html [10]: https://app.datadoghq.com/source-code/setup/rum +[11]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/error_tracking/mobile/ios.md b/content/en/real_user_monitoring/error_tracking/mobile/ios.md index a0954c63743..4cb4c41004f 100644 --- a/content/en/real_user_monitoring/error_tracking/mobile/ios.md +++ b/content/en/real_user_monitoring/error_tracking/mobile/ios.md @@ -370,6 +370,13 @@ Once your application crashes and you restart the application, the iOS SDK uploa **Note**: Re-uploading a source map does not override the existing one if the version has not changed. +### Upload your .dSYM file manually + +You can also upload `.dSYM` files manually, without the Datadog CLI. This is useful for one-off uploads or for pipelines that don't run `datadog-ci`: + +- From the [RUM Debug Symbols][20] page in the Datadog UI. +- Using the [upload API endpoint][21]. + ### Use Datadog CI to upload your .dSYM file You can use the command line tool [@datadog/datadog-ci][8] to upload your `.dSYM` file: @@ -488,3 +495,4 @@ To verify your iOS Crash Reporting and Error Tracking configuration, issue a cra [18]: /dashboards/widgets/timeseries [19]: /real_user_monitoring/error_tracking/mobile/ios/?tab=cocoapods#add-crash-reporting [20]: https://app.datadoghq.com/source-code/setup/rum +[21]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/error_tracking/mobile/reactnative.md b/content/en/real_user_monitoring/error_tracking/mobile/reactnative.md index 5615e822949..47fdaa0d9e5 100644 --- a/content/en/real_user_monitoring/error_tracking/mobile/reactnative.md +++ b/content/en/real_user_monitoring/error_tracking/mobile/reactnative.md @@ -122,6 +122,10 @@ When the SDK is initialized with a version suffix, you must manually override th See the [RUM Debug Symbols][16] page to view all uploaded symbols. +### Upload source maps manually + +In addition to the build-tool flows described above, you can upload source maps manually from the [RUM Debug Symbols][16] page, or programmatically through the [source maps upload API][18]. + ## Limitations Source maps and mapping files are limited in size to **500 MB** each, while dSYM files can go up to **2 GB** each. @@ -511,3 +515,4 @@ if (project.tasks.findByName("minify${variant.name.capitalize()}WithR8")) { [15]: https://plugins.gradle.org/plugin/com.datadoghq.dd-sdk-android-gradle-plugin [16]: https://app.datadoghq.com/source-code/setup/rum [17]: https://github.com/DataDog/datadog-ci/blob/master/packages/datadog-ci/src/commands/react-native/README.md#inject-debug-id +[18]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/guide/debug-symbols.md b/content/en/real_user_monitoring/guide/debug-symbols.md index 1e4a91b7d18..cabaab34e81 100644 --- a/content/en/real_user_monitoring/guide/debug-symbols.md +++ b/content/en/real_user_monitoring/guide/debug-symbols.md @@ -3,7 +3,7 @@ title: Investigate Obfuscated Stack Traces with RUM Debug Symbols description: "Debug and deobfuscate stack traces in RUM using debug symbols to investigate errors in obfuscated mobile and web applications." --- -The [RUM Debug Symbols page][1] lists all the debug symbols that are uploaded for a given type of RUM application. You can use this page to investigate obfuscated stack traces. +The [RUM Debug Symbols page][1] lists all the debug symbols that are uploaded for a given type of RUM application. You can use this page to investigate obfuscated stack traces. Debug symbols can be uploaded automatically through your CI/CD pipeline, or manually from this page or the [source map upload API][3].
To automatically associate stack traces with your service and version for source code resolution, use the Source Code Context build plugin.
@@ -21,9 +21,9 @@ You can ignore this warning. The stack trace is already readable. ### No debug symbols uploaded for this version -Use the [RUM Debug Symbols page][1] to see if there are debug symbols for your application. This page is filtered by {{< ui >}}type{{< /ui >}} (JavaScript, Android, iOS, React Native, Flutter). Use the filter to find the debug symbols you are looking for. +Use the [RUM Debug Symbols page][1] to see if there are debug symbols for your application. This page is filtered by {{< ui >}}type{{< /ui >}} (JavaScript, Android, iOS, React Native, Flutter, Unity (IL2CPP), ELF symbol files (Linux), PE/PDB symbol files (Windows)). Use the filter to find the debug symbols you are looking for. -If there are no debug symbols for your application, [upload them][2]. +If there are no debug symbols for your application, [upload them][2]. You can upload missing symbols manually from the [RUM Debug Symbols page][1] or through the [source map upload API][3], without waiting for a CI run.
Ensure that the size of each debug symbol does not exceed the limit of **500 MB**, otherwise the upload is rejected. @@ -41,6 +41,7 @@ Datadog relies on different tags to match debug symbols with stack traces. These | iOS | `uuid` | | React Native | `service`, `version`, `bundle_name`, `platform`; if multiple source maps match on these fields, the one with the highest `build_number` is selected | | Flutter | `service`, `version`, `variant`, `architecture` | +| Unity (IL2CPP) | `build_id` | The [RUM Debug Symbols page][1] displays the values of these tags. If you find a mismatch, [upload the debug symbols][2] again with a corrected set of tags. @@ -48,3 +49,4 @@ The [RUM Debug Symbols page][1] displays the values of these tags. If you find a [1]: https://app.datadoghq.com/source-code/setup/rum [2]: /real_user_monitoring/error_tracking/mobile/android/?tab=us#upload-your-mapping-file +[3]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/ diff --git a/content/en/real_user_monitoring/guide/upload-javascript-source-maps.md b/content/en/real_user_monitoring/guide/upload-javascript-source-maps.md index 2a56434c47a..9bcd5aacf7d 100644 --- a/content/en/real_user_monitoring/guide/upload-javascript-source-maps.md +++ b/content/en/real_user_monitoring/guide/upload-javascript-source-maps.md @@ -11,6 +11,9 @@ further_reading: - link: 'https://github.com/DataDog/datadog-ci/tree/master/packages/base/src/commands/sourcemaps' tag: 'Source Code' text: 'Sourcemaps command reference' +- link: 'https://docs.datadoghq.com/api/latest/rum/upload-source-maps/' + tag: 'Documentation' + text: 'Upload RUM source maps via the API' - link: "https://learn.datadoghq.com/courses/tracking-errors-rum-javascript" tag: "Learning Center" text: "Tracking errors with RUM for JavaScript Web Applications" @@ -113,6 +116,12 @@ If the sum of the file size for javascript.364758.min.js and ## Upload your source maps +You can upload source maps to Datadog in three ways: + +- **CI/CD with the Datadog CLI** (recommended for automated builds): add an extra step in your CI pipeline to run the dedicated command described below. +- **Manual upload from the Datadog UI**: for one-off uploads, upload source maps directly from the [{{< ui >}}Debug Symbols{{< /ui >}}][5] page. +- **Programmatic upload via the API**: for environments without a CI pipeline or for custom automation, use the [source maps upload API endpoint][6]. + The best way to upload source maps is to add an extra step in your CI pipeline and run the dedicated command from the [Datadog CLI][1]. It scans the `dist` directory and subdirectories to automatically upload source maps with relevant minified files. {{< site-region region="us" >}} @@ -190,3 +199,4 @@ On the other hand, an unminified stack trace provides you with all the context y [3]: https://docs.datadoghq.com/logs/log_collection/javascript/#initialization-parameters [4]: https://github.com/DataDog/datadog-ci/tree/master/packages/base/src/commands/sourcemaps#link-errors-with-your-source-code [5]: https://app.datadoghq.com/source-code/setup/rum +[6]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/