Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion content/en/error_tracking/frontend/mobile/android.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
[25]: /real_user_monitoring/application_monitoring/android/setup/#track-background-events
[26]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/
4 changes: 4 additions & 0 deletions content/en/real_user_monitoring/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,10 @@ datadog-ci flutter-symbols upload --service-name <YOUR_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]
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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/
8 changes: 7 additions & 1 deletion content/en/real_user_monitoring/error_tracking/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
[3]: /error_tracking/explorer
[4]: https://app.datadoghq.com/source-code/setup/rum
[5]: https://docs.datadoghq.com/api/latest/rum/upload-source-maps/
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,10 @@ datadog-ci flutter-symbols upload --service-name <your_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.
Expand Down Expand Up @@ -163,3 +167,4 @@ datadog-ci flutter-symbols upload --service-name <your_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/
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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/
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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/
8 changes: 5 additions & 3 deletions content/en/real_user_monitoring/guide/debug-symbols.md
Original file line number Diff line number Diff line change
Expand Up @@ -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].

<div class="alert alert-info">To automatically associate stack traces with your service and version for source code resolution, use the <a href="/real_user_monitoring/application_monitoring/browser/build_plugins/source_code_context">Source Code Context build plugin</a>.</div>

Expand All @@ -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.

<div class="alert alert-danger">
Ensure that the size of each debug symbol does not exceed the limit of **500 MB**, otherwise the upload is rejected.
Expand All @@ -41,10 +41,12 @@ 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.



[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/
Loading
Loading