Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
15edd61
docs(live-debugger): prepare docs for GA
tylfin Jun 22, 2026
ee8972d
Remove log probes from DI docs; redirect to Live Debugger
thenukasiva Jun 25, 2026
bded4cd
Remove screenshots from metric, span, and span tag sections
thenukasiva Jun 25, 2026
fc14868
Remove Node.js, Ruby, and Go from enabling page language selector
thenukasiva Jun 25, 2026
69a92a5
Merge PR #37664: Prepare Live Debugger docs for GA
sstonehill12 Jun 26, 2026
15336cf
Merge PR #37757: Remove log probes from DI docs; redirect to Live Deb…
sstonehill12 Jun 26, 2026
cc68b0b
Update source:dd_debugger reference to Live Debugger logs
sstonehill12 Jun 26, 2026
c05de3c
Restructure DI enablement section to lead with in-app option
sstonehill12 Jun 26, 2026
0a52328
Reflect actual DI Settings page UX in enablement section
sstonehill12 Jun 26, 2026
6ee5479
Replace LD card grid with per-language manual enablement tabs
sstonehill12 Jun 30, 2026
215aed9
Move LD manual enablement instructions to a dedicated sub-page
sstonehill12 Jun 30, 2026
e1f1309
Restructure Live Debugger enablement section
sstonehill12 Jun 30, 2026
40a841b
List all three Agent config methods on the Go tab
sstonehill12 Jun 30, 2026
aa1ca1a
Consolidate enablement onto main LD page; delete enabling sub-page
sstonehill12 Jul 14, 2026
a21207d
Refine redaction docs and note Bits LD Strict-mode restriction
sstonehill12 Jul 15, 2026
0c6f1e8
Replace tracer references with Datadog SDK terminology
sstonehill12 Jul 15, 2026
03df9e0
Apply suggestion from @sstonehill12
sstonehill12 Jul 15, 2026
081ecfa
Merge branch 'master' into sarah.stonehill/di-logs-sunset-and-live-de…
sstonehill12 Jul 15, 2026
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
215 changes: 180 additions & 35 deletions content/en/tracing/live_debugger/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,46 +47,181 @@ Live Debugger provides:

## Requirements and setup

Live Debugger supports Python, Java, .NET, Ruby, Node.js, PHP, and Go. It requires the [Datadog Agent][2] (version 7.49.0 or later), an [APM-instrumented application][3], and [Remote Configuration][4].
Live Debugger supports Python, Java, .NET, Ruby, Node.js, PHP, and Go. It requires:

### Enablement modes
- [Datadog Agent][2] version 7.49.0 or later
- [Datadog SDK][3] installed
- [Unified Service Tagging][27] configured with `service`, `env`, and `version` tags on your deployment
- [Remote Configuration][4] enabled in the Agent
- (Recommended) [Source Code Integration][28] set up

Manage Live Debugger for each service and environment from the Live Debugger {{< ui >}}Settings{{< /ui >}} page. Each service can be in one of three modes:
### Minimum SDK versions

- {{< ui >}}Automatic{{< /ui >}}: Eligible services are enabled automatically. Switch a service to {{< ui >}}Enabled{{< /ui >}} for a faster debugging experience with debug symbols.
- {{< ui >}}Enabled{{< /ui >}}: Live Debugger is ready to use on this service in this environment, with faster setup and a better debugging experience.
- {{< ui >}}Disabled{{< /ui >}}: This service is explicitly disabled and is not enabled automatically.
Live Debugger requires the following minimum Datadog SDK versions:

### Minimum tracer versions

Live Debugger requires the following minimum tracer versions:

- [Python][5] ≥ 4.11.0
- [Java][6] ≥ 1.64.0
Comment thread
sstonehill12 marked this conversation as resolved.
- [Python][5] ≥ 4.11.0
- [.NET][7] ≥ 3.46.0
- [Ruby][9] ≥ 2.35.0
- [Node.js][8] ≥ 5.109.0
- [PHP][10] ≥ 1.21.0
- [Ruby][9] ≥ 2.35.0
- [Go][22] ≥ 2.9.0

Older tracer versions might require enabling Live Debugger through an environment variable. Follow the setup instructions for your language:

{{< card-grid >}}
{{< image-card href="/dynamic_instrumentation/enabling/java" src="integrations_logos/java.png" alt="Java" >}}
{{< image-card href="/dynamic_instrumentation/enabling/python" src="integrations_logos/python.png" alt="Python" >}}
{{< image-card href="/dynamic_instrumentation/enabling/dotnet" src="integrations_logos/dotnet-core.png" alt="Dotnet" >}}
{{< image-card href="/dynamic_instrumentation/enabling/dotnet" src="integrations_logos/dotnet-framework.png" alt="Dotnet" >}}
{{< image-card href="/dynamic_instrumentation/enabling/nodejs" src="integrations_logos/nodejs.png" alt="Node.js" >}}
{{< image-card href="/dynamic_instrumentation/enabling/ruby" src="integrations_logos/ruby.png" alt="Ruby" >}}
{{< image-card href="/dynamic_instrumentation/enabling/php" src="integrations_logos/php.png" alt="PHP" >}}
{{< image-card href="/dynamic_instrumentation/enabling/go" src="integrations_logos/go-metro.png" alt="Go" >}}
{{< /card-grid >}}

<div class="alert alert-info">
<b>Why DI instructions?</b>
Live Debugger is built on <a href="/tracing/dynamic_instrumentation/">Dynamic Instrumentation (DI)</a>, so its
setup instructions and limitations also apply here.
</div>
### Enabling Live Debugger

<div class="alert alert-info">To use Bits Live Debugger, see the <a href="/tracing/live_debugger/bits-live-debugger/">Bits Live Debugger</a> page for setup instructions.</div>

For Java, Python, .NET, and Node.js services with a recent SDK version and all other requirements met, Live Debugger can be enabled from the [Live Debugger Settings page][26]. For other runtime languages or older SDK versions, see below for the configuration steps required to enable Live Debugger. Disabling Live Debugger for a service and environment can always be done from the [Live Debugger Settings page][26], regardless of runtime language or SDK version.

{{< programming-lang-wrapper langs="java,python,.NET,nodejs,ruby,php,go" >}}

{{< programming-lang lang="java" >}}
**Requirement**: [Datadog Java SDK][6] version 1.64.0 or higher, running on JDK 8 or higher.

Start your service with `DD_DYNAMIC_INSTRUMENTATION_ENABLED=true`, along with `DD_SERVICE`, `DD_ENV`, and `DD_VERSION`. The `-javaagent` argument must come before `-jar`:

```shell
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
java \
-javaagent:dd-java-agent.jar \
-jar <YOUR_SERVICE>.jar
```

**Note**: On JDK 18 and below, classes compiled with the `-parameters` flag (default in Spring 6+, Spring Boot 3+, and Scala) may fail to instrument.
{{< /programming-lang >}}

{{< programming-lang lang="python" >}}
**Requirement**: [Datadog Python SDK (`ddtrace`)][5] version 4.11.0 or higher.

Install `ddtrace`, then start your service with `DD_DYNAMIC_INSTRUMENTATION_ENABLED=true` and `ddtrace-run`:

```shell
pip install ddtrace
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
ddtrace-run python -m myapp.py
```
{{< /programming-lang >}}

{{< programming-lang lang=".NET" >}}
**Requirement**: [Datadog .NET SDK][7] version 3.46.0 or higher.

Start your service with the following environment variables set:

```shell
DD_SERVICE=<YOUR_SERVICE>
DD_ENV=<YOUR_ENV>
DD_VERSION=<YOUR_VERSION>
DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```
{{< /programming-lang >}}

{{< programming-lang lang="nodejs" >}}
**Requirement**: [Datadog Node.js SDK (`dd-trace-js`)][8] version 5.109.0 or higher. If your source code is transpiled or bundled (for example, TypeScript, Babel, or Webpack), publish source maps with the deployed application so that logpoints map to the correct lines.

Start your service with the following environment variables set:

```shell
DD_SERVICE=<YOUR_SERVICE>
DD_ENV=<YOUR_ENV>
DD_VERSION=<YOUR_VERSION>
DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```
{{< /programming-lang >}}

{{< programming-lang lang="ruby" >}}
Ruby services must be enabled through environment variables. Auto-enablement from the Settings page is not available for Ruby.

**Requirements:**

- [Datadog Ruby SDK (`ddtrace`)][9] version 2.35.0 or higher
- Ruby 2.6 or higher (MRI/CRuby only; JRuby is not supported)
- A Rack-based framework (Rails, Sinatra, or other Rack-compatible frameworks). Background workers (such as Sidekiq or Resque) are not supported.
- `RAILS_ENV` or `RACK_ENV` set to `production`

Start your service with the following environment variables set:

```shell
export DD_SERVICE=<YOUR_SERVICE>
export DD_ENV=<YOUR_ENV>
export DD_VERSION=<YOUR_VERSION>
export DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```

**Note**: Live Debugger initializes on the first HTTP request. Your service must receive at least one request before you can create a logpoint.
{{< /programming-lang >}}

{{< programming-lang lang="php" >}}
PHP services must be enabled through environment variables. Auto-enablement from the Settings page is not available for PHP.

**Requirement**: [Datadog PHP SDK (`dd-trace-php`)][10] version 1.21.0 or higher.

Start your service with the following environment variables set:

```shell
DD_SERVICE=<YOUR_SERVICE>
DD_ENV=<YOUR_ENV>
DD_VERSION=<YOUR_VERSION>
DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```
{{< /programming-lang >}}

{{< programming-lang lang="go" >}}
Go services require enabling Live Debugger in both the Datadog Agent and the application.

**Requirements:**

- [Datadog Agent][2] version 7.73.0 or higher, running on the same host as your application
- [Datadog Go SDK][22] version 2.9.0 or higher (or 1.74.6 or higher on the v1 line)
- Linux kernel 5.17 or higher

**Configure the Datadog Agent** using one of the following methods, depending on how you deploy the Agent:

- **Configuration YAML file**: Update `system-probe.yaml` (located alongside `datadog.yaml`) with the following. For more information, see [Agent configuration files][29].

```yaml
dynamic_instrumentation:
enabled: true
```

- **Environment variable**: Add the following to your Datadog Agent manifest:

```
DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```

- **Helm**: Add the following to your Helm chart:

```yaml
datadog:
dynamicInstrumentationGo:
enabled: true
```

**Configure your service**: After the Agent is configured, services on the same host can be enabled from the [Live Debugger Settings page][26], or by starting the service with the following environment variables set:

```shell
DD_SERVICE=<YOUR_SERVICE>
DD_ENV=<YOUR_ENV>
DD_VERSION=<YOUR_VERSION>
DD_DYNAMIC_INSTRUMENTATION_ENABLED=true
```
{{< /programming-lang >}}

{{< /programming-lang-wrapper >}}

#### Enablement modes

Each service and environment is in one of three modes on the Live Debugger Settings page:

- **Automatic**: Live Debugger has not been set to Enabled or Disabled yet on this service and environment. This setting changes to **Enabled** automatically the first time a Debug Session is started. For a faster first-time debugging experience, switch the setting to **Enabled** in advance.
- **Enabled**: For eligible services, this setting means Live Debugger is activated on the selected service and environment, including debug symbol uploads and faster delivery of new logpoints.
- **Disabled**: This setting blocks logpoints from being created or re-activated on a given service and environment. It applies regardless of runtime language or SDK version.

### Permissions

Expand All @@ -105,7 +240,7 @@ Live Debugger generates logs that are sent to Datadog and appear alongside your
If you use [Exclusion filters][11], make sure Live Debugger logs are not filtered:

1. Create a logs index and [configure it][12] to the desired retention with **no sampling**.
2. Set the filter to match on the `source:dd_debugger` tag. All Dynamic Instrumentation logs have this source.
2. Set the filter to match on the `source:dd_debugger` tag. All Live Debugger logs have this source.
3. Make sure the new index takes precedence over any other with filters that match that tag, because the first match wins.

### Link your source code
Expand Down Expand Up @@ -148,14 +283,14 @@ Live Debugger data might contain sensitive information, especially when using th

Live Debugger has two redaction modes:

- {{< ui >}}Strict Mode{{< /ui >}}: Redacts all values except numbers and Booleans.
- {{< ui >}}Targeted Mode{{< /ui >}}: Redacts known sensitive patterns such as credit card numbers, API keys, IPs, and other PII. It also runs a high-entropy secrets scanner that automatically redacts likely secrets, which appear as `[REDACTED:HIGH_ENTROPY]` in captured data.
- **Strict Mode**: Redacts all values except numbers and Booleans. Bits Live Debugger is not available for service and environment combinations set to Strict Mode.
- **Targeted Mode**: Redacts known sensitive patterns such as credit card numbers, API keys, and IPs. It also runs a high-entropy secrets scanner that automatically redacts likely secrets, which appear as `[REDACTED:HIGH_ENTROPY]` in captured data.

These redaction modes cannot be disabled, only switched. Targeted Mode is applied automatically in common pre-production environments such as `staging` or `preprod`. Changing the redaction mode requires the **Live Debugger Redaction Write** permission.
These redaction modes cannot be disabled, only switched, and Targeted Mode is applied automatically in common pre-production environments like `staging` or `preprod`. Changing the redaction mode requires the **Live Debugger Redaction Write** permission.

#### Identifier-based redaction

Variable values associated with common sensitive identifiers (for example, `password`, `accessToken`, and similar terms) are scrubbed before captured data leaves the host. Each tracer includes additional language-specific redaction rules.
Variable values associated with common sensitive identifiers (for example, `password`, `accessToken`, and similar terms) are scrubbed before captured data leaves the host. Additional language-specific redaction rules are built into each SDK.

You can extend redaction behavior through:

Expand All @@ -167,8 +302,14 @@ See the [sensitive data scrubbing][1] instructions and [Sensitive Data Scanner][

### Bits Live Debugger

{{< beta-callout url="https://www.datadoghq.com/product-preview/debug-with-bits/" >}}
Bits Live Debugger is in Preview. Request access to join the waiting list.
{{< /beta-callout >}}

[Bits Live Debugger][23] lets you investigate a running service by describing the issue in plain language. Bits Code handles logpoint placement, captures variable snapshots, and helps interpret the results.

**Note**: Bits Live Debugger requires the service and environment to be in Targeted Mode. See [Mode-based redaction][24] for details.

## Impact on performance and billing

Enabling Live Debugger on a service does not trigger data capture or impact performance. Data capture only occurs when there are active Debug Sessions on that service.
Expand Down Expand Up @@ -214,3 +355,7 @@ The following constraints apply to Live Debugger usage and configuration:
[22]: /tracing/trace_collection/automatic_instrumentation/dd_libraries/go
[23]: /tracing/live_debugger/bits-live-debugger/
[24]: #mode-based-redaction
[26]: https://app.datadoghq.com/debugging/settings
[27]: /getting_started/tagging/unified_service_tagging/
[28]: /integrations/guide/source-code-integration/
[29]: /agent/configuration/agent-configuration-files/?tab=agentv6v7#agent-main-configuration-file
Loading
Loading