GREsau.Tracing
0.2.0
dotnet add package GREsau.Tracing --version 0.2.0
NuGet\Install-Package GREsau.Tracing -Version 0.2.0
<PackageReference Include="GREsau.Tracing" Version="0.2.0" />
paket add GREsau.Tracing --version 0.2.0
#r "nuget: GREsau.Tracing, 0.2.0"
// Install GREsau.Tracing as a Cake Addin
#addin nuget:?package=GREsau.Tracing&version=0.2.0
// Install GREsau.Tracing as a Cake Tool
#tool nuget:?package=GREsau.Tracing&version=0.2.0
GREsau.Tracing
GREsau.Tracing is a library to perform performance tracing of .NET Core applications. Essentially, it is a simplified alternative to dotnet-trace, consumable as a C# library rather than a CLI tool.
GREsau.Tracing will only output nettrace
-format files. These can be viewed on Windows using PerfView, or converted to speedscope
-format using dotnet-trace's convert command, and then viewed at https://www.speedscope.app.
# Converts nettrace file to speedscope, writing to trace.speedscope.json
> dotnet-trace convert --format Speedscope trace.nettrace
This library makes use of Microsoft.Diagnostics.NETCore.Client. If you're looking for something more powerful/flexible and you're willing to accept the complexity that comes with that, consider using that library directly.
Installing
Install via NuGet:
> dotnet add package GREsau.Tracing
Basic Usage
To trace the current process for a period of time, saving the output file as "trace.nettrace":
var client = new TraceClient();
await client.CollectAsync("trace.nettrace", TimeSpan.FromMinutes(1));
You can also trace a different process by passing in its ID:
var client = new TraceClient(123);
await client.CollectAsync("trace.nettrace", TimeSpan.FromMinutes(1));
By default, TraceClient
will track CPU usage and general .NET runtime information, equivalent to running dotnet-trace with the cpu-sampling (default) profile. If you want to trace something different, you can pass in a collection of Microsoft.Diagnostics.NETCore.Client.EventPipeProvider
s:
var gcCollectProvider = new EventPipeProvider(
"Microsoft-Windows-DotNETRuntime",
EventLevel.Informational,
(long)(ClrTraceEventParser.Keywords.GC | ClrTraceEventParser.Keywords.Exception));
var client = new TraceClient(providers: new[] { gcCollectProvider });
await client.CollectAsync("trace.nettrace", TimeSpan.FromMinutes(1));
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp3.0 is compatible. netcoreapp3.1 was computed. |
-
.NETCoreApp 3.0
- Microsoft.Diagnostics.NETCore.Client (>= 0.1.0-preview.19606.2)
- Microsoft.Diagnostics.Tracing.TraceEvent (>= 2.0.48)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.