C# dotnet-trace工具使用方法 C#如何捕获应用的性能跟踪

来源:这里教程网 时间:2026-02-21 17:40:29 作者:

如果您需要分析C# .NET应用程序的运行时性能行为,dotnet-trace工具可直接从运行中的进程采集ETW(Windows)或EventPipe(跨平台)事件数据。以下是使用dotnet-trace捕获应用性能跟踪的具体方法:

一、安装dotnet-trace工具

dotnet-trace是.NET SDK的全局工具,需通过dotnet CLI安装。安装后可在任意目录调用,无需项目引用。

1、确保已安装.NET 5.0或更高版本SDK。

2、在终端中执行命令:dotnet tool install --global dotnet-trace

3、若已安装旧版本,升级执行:dotnet tool update --global dotnet-trace

二、对正在运行的进程启用跟踪

该方式适用于无法修改启动参数的已部署应用,通过进程ID附加采集,支持Linux/macOS/Windows。

1、使用

dotnet-trace ps
列出当前可用的.NET进程及其PID。

2、确认目标进程PID后,执行:dotnet trace collect --process-id

3、默认采集60秒,期间可按Ctrl+C提前停止;生成的trace.nettrace文件将保存在当前目录。

三、启动新进程并同步跟踪

此方式在应用启动瞬间即开始采集,避免遗漏初始化阶段的事件,适合调试冷启动性能问题。

1、在终端中输入:dotnet trace collect -- dotnet run(适用于项目根目录)。

2、若为已编译程序,使用:dotnet trace collect -- app.dll>

3、应用退出后,dotnet-trace自动结束采集并保存trace.nettrace文件。

四、指定事件提供程序与采样频率

通过自定义Provider可缩小数据范围,降低开销,聚焦CPU、GC、ThreadPool等关键子系统。

1、采集基础运行时事件(含JIT、GC、Exception):dotnet trace collect --providers Microsoft-DotNETCore-SampleProfiler

2、启用高精度CPU采样(仅Linux/macOS):dotnet trace collect --providers Microsoft-DotNETCore-SampleProfiler:0x0000000000000001:4

3、同时采集GC与ThreadPool事件:dotnet trace collect --providers "Microsoft-Windows-DotNETRuntime:4:4,Microsoft-Windows-DotNETRuntime-ThreadPool:4:4"

五、离线分析生成的trace.nettrace文件

采集所得的trace.nettrace为二进制格式,需借助dotnet-trace或Visual Studio等工具解析可视化。

1、将跟踪转换为Chrome Trace Format以供浏览器打开:dotnet trace convert trace.nettrace,生成trace.json。

2、在Chrome或Edge浏览器中访问

chrome://tracing
,点击Load加载trace.json。

3、使用

dotnet trace report trace.nettrace
输出摘要统计,包括GC次数、JIT时间、异常计数等文本信息。

相关推荐

热文推荐