Microsoft.Diagnostics.Runtime 2.2.332302

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Microsoft.Diagnostics.Runtime --version 2.2.332302
NuGet\Install-Package Microsoft.Diagnostics.Runtime -Version 2.2.332302
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Microsoft.Diagnostics.Runtime" Version="2.2.332302" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Microsoft.Diagnostics.Runtime --version 2.2.332302
#r "nuget: Microsoft.Diagnostics.Runtime, 2.2.332302"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Microsoft.Diagnostics.Runtime as a Cake Addin
#addin nuget:?package=Microsoft.Diagnostics.Runtime&version=2.2.332302

// Install Microsoft.Diagnostics.Runtime as a Cake Tool
#tool nuget:?package=Microsoft.Diagnostics.Runtime&version=2.2.332302

Migrating to 2.1

Here is a summary of breaking changes in ClrMD 2.1:

Microsoft.Diagnostics.Runtime.Architecture → System.Runtime.InteropServices.Architecture

Use System.Runtime.InteropServices.Architecture instead. Note that the values have shifted, since ClrMD defined an "Unknown" enum member as 0, which is not in the new architecture list.

IBinaryLocator → IFileLocator

We have removed IBinaryLocator and replaced it with IFileLocator. Similarly the properties on DataTarget and CustomDataTarget have changed accordingly.

If you originally implemented the IBinaryLocator interface, you will now need to implement IFileLocator instead. This interface is meant to fully capture the SSQP conventions for making symbol server requests. The specs for which can be found at SSQP Key Conventions and SSQP CLR Private Key conventions.

Most folks don't need to implement these interface specifically, and ClrMD provides a reasonable default implementation. Unfortunately, the best way to see how these are implemented is to look at ClrMD's implementation if you need to change behavior.

Why did we make this change?

IBinaryLocator did not provide the proper interface surface to fully capture Elf and Mach-O symbol server requests and the underlying interface could not be made to work without resorting to some really bad hacks.

It was a lot cleaner to replace IBinaryLocator than to try to hack around the original implementation.

TODO: Provide stream so this can be passed to other libraries.

Why did we make this change?

ClrMD was designed 10 years ago as a monolithic API that does everything for the user, such as parsing files that are unrelated to .Net diagnostics. It was originally designed this way because there wasn't a healthy NuGet ecosystem at the time where these kinds of APIs existed.

We've found some very tough to solve problems in the internals of PEImage where what ClrMD needs is a PE image reader which understands that data could be missing from a dump file, that we may need to go request the file from a symbol server mid-operation, and that requesting from a symbol server should only be done on demand and not eagerly.

We cannot reasonably make those fixes changes without another breaking change to PEImage. At this point it makes sense to have folks use a REAL PE image (and elf image) reader instead of ClrMD's half-baked one.

Some alternatives:

  1. https://www.nuget.org/packages/Marklio.Metadata/
  2. System.Reflection.Metadata
  3. https://github.com/dotnet/symstore/tree/main/src/Microsoft.FileFormats

ModuleInfo has changed slightly

If you implement your own IDataTarget and need to produce ModuleInfo you will need to define an implementation here. I will likely mark my implementations of ModuleInfo for pefiles, elf files, and mach-o files as public at some point, but I wanted to make sure they are actually ready (design-wise) to be marked public first.

VersionInfo is removed

Use System.Version instead.

ClrInfo.DacInfo → ClrInfo.DebugLibraryInfo

Additionally we added ClrInfo.IsSingleFile.

ClrInfo.DacLibraryClrInfo.DebuggingLibraries

Instead of providing a single "DacLibrary", we now enumerate all debugging libraries we know to exist for this CLR runtime. The resulting list is stored in DebuggingLibraries instead. Most folks didn't use DacLibrary directly, but if you did then you will need to enumerate DebuggingLibraries and find all libraries which match your current platform and architecture. Additionally, we also enumerate DBI libraries even though ClrMD does not use them (this is DebugLibraryInfo.Kind).

You will still find the original file DacLibrary pointed to in this list of dacs.

ClrRuntimeInfo has is no longer marked public

This is an odd struct that probably will change over the lifetime of .Net Core. It should not have been exposed as public to begin with. Instead all of this information is provided by ClrInfo.DebuggingLibraries.

ClrInfoProvider was removed

This functionality has been wrapped into ClrInfo, and probably shouldn't have been marked public to begin with.

Why did we make this change?

Creating ClrInfo was a strange, multi class process and involved a lot of moving pieces spread over the codebase. We now consolidated all of the relevant code into ClrInfo.cs. We've also pulled together all of the various ways of finding the DAC and DBI libraries all in one place and provided a way for the user to locate all of the various binaries.

This also lets ClrMD enumerate through all possible matching DAC libraries and query the symbol server for all of them. This is especially helpful in case one of the dacs happens to be missing from the symbol server (which should be rare but isn't unheard of).

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  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 netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (36)

Showing the top 5 NuGet packages that depend on Microsoft.Diagnostics.Runtime:

Package Downloads
BenchmarkDotNet The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Powerful .NET library for benchmarking

ppy.osu.Framework

A 2D application/game framework written with rhythm games in mind.

Backtrace

Backtrace's integration with C# applications allows customers to capture and report handled and unhandled C# exceptions to their Backtrace instance, instantly offering the ability to prioritize and debug software errors.

Phoesion.Glow.SDK.Firefly.SrvHost.DotNet.Dependencies The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

Phoesion Glow SDK Firefly SrvHost Runner (DotNet) Dependencies

DynaMD

Helper objects to browse complex structures returned by ClrMD

GitHub repositories (36)

Showing the top 5 popular GitHub repositories that depend on Microsoft.Diagnostics.Runtime:

Repository Stars
dnSpy/dnSpy
.NET debugger and assembly editor
winsw/winsw
A wrapper executable that can run any executable as a Windows service, in a permissive license.
dotnet/BenchmarkDotNet
Powerful .NET library for benchmarking
xoofx/markdig
A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET
microsoft/perfview
PerfView is a CPU and memory performance-analysis tool
Version Downloads Last updated
3.1.512801 17,669 2/29/2024
3.1.506101 17,934 2/1/2024
3.1.456101 41,160 11/13/2023
3.1.456003 12,498 11/11/2023
3.1.455904 1,862 11/10/2023
3.0.442202 42,203 8/22/2023
3.0.0-beta.23214.4 1,202 4/17/2023
3.0.0-beta.23177.1 235 3/28/2023
3.0.0-beta.23165.1 218 3/16/2023
3.0.0-beta.23159.4 165 3/9/2023
3.0.0-beta.23158.2 159 3/9/2023
3.0.0-beta.23156.1 142 3/6/2023
2.4.416101 774,935 3/12/2023
2.3.405304 90,429 1/5/2023
2.2.343001 74,903 10/31/2022
2.2.332302 8,818,645 6/23/2022
2.2.332001 4,054 6/20/2022
2.1.327703 13,994 5/27/2022
2.0.226801 2,712,247 5/19/2021
2.0.226401 998 5/14/2021
2.0.222201 54,064 4/22/2021
2.0.221201 7,484 4/14/2021
2.0.217201 51,799 3/22/2021
2.0.161401 988,125 12/14/2020
2.0.156101 33,925 11/18/2020
2.0.151903 24,769 10/19/2020
2.0.145301 87,034 9/4/2020
2.0.142701 6,221 8/28/2020
2.0.142501 1,598 8/25/2020
2.0.142103 1,655 8/21/2020
2.0.141902 5,713 8/19/2020
2.0.137201 25,169 7/22/2020
2.0.130507 43,754 6/6/2020
2.0.0-rc.20303.6 422 6/4/2020
2.0.0-rc.20278.6 505 5/28/2020
2.0.0-beta.20276.4 345 5/27/2020
2.0.0-beta.20273.1 407 5/23/2020
2.0.0-beta.20272.2 425 5/22/2020
2.0.0-beta.20272.1 344 5/22/2020
2.0.0-beta.20268.2 425 5/18/2020
2.0.0-beta.20230.2 490 4/30/2020
2.0.0-beta.20230.1 353 4/30/2020
2.0.0-beta.20229.3 353 4/30/2020
2.0.0-beta.20223.2 348 4/23/2020
2.0.0-beta.20222.8 320 4/23/2020
2.0.0-beta.20222.7 313 4/23/2020
2.0.0-beta.20222.5 323 4/22/2020
2.0.0-beta.20220.3 333 4/20/2020
2.0.0-beta.20213.1 463 4/13/2020
2.0.0-beta.20174.2 454 3/24/2020
2.0.0-beta.20072.5 730 1/23/2020
2.0.0-beta.19618.7 494 12/19/2019
2.0.0-beta.19612.8 385 12/12/2019
1.1.142101 240,663 8/21/2020
1.1.132302 12,895 6/23/2020
1.1.127808 86,828 5/29/2020
1.1.126102 7,334,168 5/17/2020
1.1.122004 54,028 4/20/2020
1.1.116301 46,444 3/13/2020
1.1.61812 86,040 12/19/2019
1.1.57604 4,747,525 11/26/2019
1.1.57004 5,359 11/20/2019
1.1.46104 118,468 9/11/2019
1.1.37504 74,585 7/25/2019
1.1.35902 7,606 7/9/2019
1.1.35504 1,838 7/5/2019
1.0.5 1,507,532 3/19/2019
1.0.3 185,014 2/13/2019
1.0.2 23,978 12/17/2018
1.0.0 15,232 11/22/2018
0.9.180305.1 267,254 3/6/2018
0.9.170809.3 180,726 8/9/2017
0.9.170626.1 22,538 6/26/2017
0.8.31-beta 699,595 10/15/2015
0.8.30-beta 6,530 9/16/2015
0.8.27-beta 40,701 9/30/2014
0.8.26-beta 1,923 8/14/2014
0.8.25-beta 3,334 3/12/2014
0.8.24-aamain00309 1,395 12/2/2014
0.7.1-beta 3,473 5/3/2013

See https://github.com/Microsoft/clrmd/releases for the latest release notes