Skip to content

Commit 8fd45bf

Browse files
rcj1gewarrennoahfalk
authored
Update docs (landing page etc) (#48189)
* update docs * Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com> --------- Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> Co-authored-by: Noah Falk <noahfalk@users.noreply.github.com>
1 parent 00d9f94 commit 8fd45bf

File tree

5 files changed

+37
-21
lines changed

5 files changed

+37
-21
lines changed

docs/core/diagnostics/index.md

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ ms.date: 10/20/2023
55
ms.topic: overview
66
#Customer intent: As a .NET Core developer I want to find the best tools to help me diagnose problems so that I can be productive.
77
---
8-
# What diagnostic tools are available in .NET Core?
8+
# Diagnostics in .NET
99

10-
Software doesn't always behave as you would expect, but .NET Core has tools and APIs that will help you diagnose these issues quickly and effectively.
10+
Software doesn't always behave as you would expect, but .NET has tools and APIs that will help you diagnose these issues quickly and effectively.
1111

1212
[Native AOT deployment](../../core/deploying/native-aot/index.md) is an application model that's been available since .NET 7. For information about .NET 8 diagnostic support for Native AOT apps, see [Native AOT diagnostics](../../core/deploying/native-aot/diagnostics.md).
1313

@@ -17,9 +17,9 @@ This article helps you find the various tools you need.
1717

1818
[Debuggers](managed-debuggers.md) allow you to interact with your program. Pausing, incrementally executing, examining, and resuming gives you insight into the behavior of your code. A debugger is a good choice for diagnosing functional problems that can be easily reproduced.
1919

20-
## Unit testing
20+
## Profilers
2121

22-
[Unit testing](../testing/index.md) is a key component of continuous integration and deployment of high-quality software. Unit tests are designed to give you an early warning when you break something.
22+
[Profilers](profilers.md) allow you to analyze your program's performance. You can collect data on memory usage, CPU usage, and other metrics to diagnose and understand performance issues.
2323

2424
## Instrumentation for observability
2525

@@ -50,10 +50,6 @@ There are multiple ways that the instrumentation data can be egressed from the a
5050
- [dotnet-monitor](./dotnet-monitor.md) - an agent for collecting traces and telemetry
5151
- Third-party libraries or app code can read the information from the <xref:System.Diagnostics.Metrics?displayProperty=nameWithType>, <xref:Microsoft.Extensions.Logging.ILogger%601>, and <xref:System.Diagnostics.Activity?displayProperty=nameWithType> APIs.
5252

53-
## Resource monitoring
54-
55-
[Resource monitoring](diagnostic-resource-monitoring.md) is the process of continuously observing and tracking the utilization, performance, and availability of various computing resources within a system. These resources can include hardware components (such as CPUs, memory, disk storage, and network interfaces) as well as software components (like applications and services). Resource monitoring is often used to detect and diagnose performance issues, and to ensure that the system is operating within expected parameters.
56-
5753
## Specialized diagnostics
5854

5955
If debugging or observability is not sufficient, .NET supports additional diagnostic mechanisms such as EventSource, Dumps, DiagnosticSource. For more information, see the [specialized diagnostics](./specialized-diagnostics-overview.md) article.
@@ -64,10 +60,6 @@ If debugging or observability is not sufficient, .NET supports additional diagno
6460

6561
## .NET Core diagnostics tutorials
6662

67-
### Write your own diagnostic tool
68-
69-
[The diagnostics client library](diagnostics-client-library.md) lets you write your own custom diagnostic tool best suited for your diagnostic scenario. Look up information in the [Microsoft.Diagnostics.NETCore.Client API reference](microsoft-diagnostics-netcore-client.md).
70-
7163
### Debug a memory leak
7264

7365
[Tutorial: Debug a memory leak](debug-memory-leak.md) walks through finding a memory leak. The [dotnet-counters](dotnet-counters.md) tool is used to confirm the leak and the [dotnet-dump](dotnet-dump.md) tool is used to diagnose the leak.
@@ -95,3 +87,7 @@ If debugging or observability is not sufficient, .NET supports additional diagno
9587
### Measure performance using EventCounters
9688

9789
[Tutorial: Measure performance using EventCounters in .NET](event-counter-perf.md) shows you how to use the <xref:System.Diagnostics.Tracing.EventCounter> API to measure performance in your .NET app.
90+
91+
### Write your own diagnostic tool
92+
93+
[The diagnostics client library](diagnostics-client-library.md) lets you write your own custom diagnostic tool best suited for your diagnostic scenario. For more information, see the [Microsoft.Diagnostics.NETCore.Client API reference](microsoft-diagnostics-netcore-client.md).

docs/core/diagnostics/profilers.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
title: Profiling tools in .NET
3+
description: An overview of .NET profiling tools.
4+
ms.date: 08/29/2025
5+
---
6+
# .NET profiling tools
7+
8+
Profilers allow you to analyze your program's performance. By analyzing data on memory usage, CPU usage, call stacks and other information, you can better understand the performance profile of your program.
9+
10+
Microsoft provides a profiler with [Visual Studio](/visualstudio/profiling/beginners-guide-to-performance-profiling) and through the [dotnet-trace](dotnet-trace.md) tool.
11+
12+
## Visual Studio profiler
13+
14+
**Visual Studio** is an integrated development environment and an excellent choice for developers working on Windows.
15+
16+
- [Measure app performance in Visual Studio](/visualstudio/profiling/)
17+
18+
## dotnet-trace
19+
20+
[`dotnet-trace`](dotnet-trace.md) is a cross-platform command-line tool that collects diagnostic traces on Windows, Linux, and Mac. You can view these traces in [Visual Studio](/visualstudio/profiling/beginners-guide-to-performance-profiling?#step-2-analyze-cpu-usage-data) or [PerfView](https://github.com/microsoft/perfview).

docs/core/diagnostics/specialized-diagnostics-overview.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,6 @@ If debugging or observability is not sufficient, .NET supports additional diagno
1313

1414
Event Source data can be collected in-process using the <xref:System.Diagnostics.Tracing.EventListener?displayProperty=nameWithType> API or with external diagnostics tools such as [Visual Studio](/visualstudio/profiling), [dotnet-monitor](./dotnet-monitor.md), [dotnet-trace](./dotnet-trace.md), [PerfView](https://github.com/microsoft/perfview), and the [Perfcollect](./trace-perfcollect-lttng.md) scripts. Using the external tools to collect event source data in traces is commonly used for performance analysis.
1515

16-
### Collect diagnostics in containers
17-
18-
The same diagnostics tools that are used in non-containerized Linux environments can also be used to [collect diagnostics in containers](diagnostics-in-containers.md). There are just a few usage changes needed to make sure the tools work in a Docker container.
19-
2016
### EventPipe
2117

2218
[EventPipe](./eventpipe.md) is a runtime component that can be used to collect tracing data, similar to ETW or LTTng. The goal of EventPipe is to allow .NET developers to easily trace their .NET applications without having to rely on platform-specific, OS-native components, such as ETW or LTTng.
@@ -41,7 +37,11 @@ The .NET runtime exposes a service endpoint that allows other processes to send
4137

4238
## DiagnosticSource & DiagnosticListener
4339

44-
[DiagnosticSource](./diagnosticsource-diagnosticlistener.md) is a module that allows code to be instrumented for production-time logging of rich data payloads for consumption within the process that was instrumented. At run time, consumers can dynamically discover data sources and subscribe to the ones of interest. <xref:System.Diagnostics.DiagnosticSource?displayProperty=nameWithType> was designed to allow in-process tools to access rich data, such as by [OpenTelemetry instrumentation libraries](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/blob/main/src/OpenTelemetry.Instrumentation.AspNetCore/README.md). DiagnosticSource data can also be egressed via EventPipe, which enables rich diagnostic data to be collected by dedicated tools. |
40+
[DiagnosticSource](./diagnosticsource-diagnosticlistener.md) is a module that allows code to be instrumented for production-time logging of rich data payloads for consumption within the process that was instrumented. At run time, consumers can dynamically discover data sources and subscribe to the ones of interest. <xref:System.Diagnostics.DiagnosticSource?displayProperty=nameWithType> was designed to allow in-process tools to access rich data, such as by [OpenTelemetry instrumentation libraries](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/blob/main/src/OpenTelemetry.Instrumentation.AspNetCore/README.md). DiagnosticSource data can also be egressed via EventPipe, which enables rich diagnostic data to be collected by dedicated tools.
41+
42+
## Collect diagnostics in containers
43+
44+
The same diagnostics tools that are used in non-containerized Linux environments can also be used to [collect diagnostics in containers](diagnostics-in-containers.md). There are just a few usage changes needed to make sure the tools work in a Docker container.
4545

4646
## See also
4747

docs/navigate/tools-diagnostics/index.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,6 @@ landingContent:
9898
url: ../../core/diagnostics/diagnostic-health-checks.md
9999
- text: Exception summary
100100
url: ../../core/diagnostics/diagnostic-exception-summary.md
101-
- text: Resource monitoring
102-
url: ../../core/diagnostics/diagnostic-resource-monitoring.md
103101
- linkListType: reference
104102
links:
105103
- text: Unmanaged API for debugging

docs/navigate/tools-diagnostics/toc.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,8 @@ items:
359359
href: ../../core/diagnostics/index.md
360360
- name: Managed debuggers
361361
href: ../../core/diagnostics/managed-debuggers.md
362+
- name: Profiling tools
363+
href: ../../core/diagnostics/profilers.md
362364
- name: Logging & tracing options
363365
href: ../../core/diagnostics/logging-tracing.md
364366
- name: ILogger Logging
@@ -377,8 +379,6 @@ items:
377379
href: ../../core/diagnostics/observability-prgrja-example.md
378380
- name: "Example: Use OpenTelemetry with Azure Monitor and Application Insights"
379381
href: ../../core/diagnostics/observability-applicationinsights.md
380-
- name: Resource monitoring
381-
href: ../../core/diagnostics/diagnostic-resource-monitoring.md
382382
displayName: resource monitoring,
383383
- name: App health checks
384384
href: ../../core/diagnostics/diagnostic-health-checks.md
@@ -423,6 +423,8 @@ items:
423423
href: ../../core/diagnostics/event-counter-perf.md
424424
- name: Compare metric APIs
425425
href: ../../core/diagnostics/compare-metric-apis.md
426+
- name: Resource monitoring
427+
href: ../../core/diagnostics/diagnostic-resource-monitoring.md
426428
- name: Migrate from Windows Performance Counters
427429
href: ../../core/diagnostics/migrate-from-windows-performance-counters.md
428430
- name: Distributed tracing

0 commit comments

Comments
 (0)