dotnet-trace工具用于采集.NET应用运行时性能跟踪数据,支持进程附加、启动同步采集、自定义事件提供程序及离线分析。

如果您需要分析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 --
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时间、异常计数等文本信息。











