DynaMD 1.0.9
See the version list below for details.
dotnet add package DynaMD --version 1.0.9
NuGet\Install-Package DynaMD -Version 1.0.9
<PackageReference Include="DynaMD" Version="1.0.9" />
paket add DynaMD --version 1.0.9
#r "nuget: DynaMD, 1.0.9"
// Install DynaMD as a Cake Addin #addin nuget:?package=DynaMD&version=1.0.9 // Install DynaMD as a Cake Tool #tool nuget:?package=DynaMD&version=1.0.9
DynaMD
Helper objects to browse complex structures returned ClrMD
The library leverages the dynamic keyword to give easy access to memory structures.
Given an address and a ClrMD ClrHeap instance, you can get a dynamic proxy by calling GetProxy:
var proxy = heap.GetProxy(0x00001000);
Or all the instances of a given type:
// Using generics:
var proxies1 = heap.GetProxies<string>();
// Or writing the type name (useful if you don't reference it):
var proxies2 = heap.GetProxies("System.String");
From there, you can access any field like you would with a "real" object:
Console.WriteLine(proxy.Value);
Console.WriteLine((string)proxy.Child.Name);
Console.WriteLine(proxy.Description.Size.Width * proxy.Description.Size.Height);
Primitive types are automatically converted:
class SomeType
{
public int IntValue;
public double DoubleValue;
}
var proxy = heap.GetProxies<SomeType>().First();
Console.WriteLine(proxy.IntValue.GetType()); // System.Int32
Console.WriteLine(proxy.DoubleValue.GetType()); // System.Int32
Non-primitive proxies can be cast to string or blittable structs:
struct BlittableStruct
{
public int Value;
}
class SomeType
{
public BlittableStruct StructValue;
public DateTime DateTimeValue;
public string StringValue;
}
var proxy = heap.GetProxies<SomeType>().First();
BlittableStruct structValue = (BlittableStruct)proxy.StructValue;
DateTime dateTimeValue = (DateTime)proxy.DateTimeValue;
string stringValue = (string)proxy.stringValue;
You can also enumerate the contents of arrays, or get the length:
class SomeType
{
public int[] ArrayValue;
}
var proxy = heap.GetProxies<SomeType>().First();
Console.WriteLine(proxy.ArrayValue.Length);
foreach (var value in proxy.ArrayValue)
{
Console.WriteLine(value);
}
To retrieve the address of a proxified object, explicitely cast it to ulong:
var address = (ulong)proxy.Child;
To retrieve the instance of ClrType, call GetClrType()
:
ClrType type = proxy.GetClrType();
Check the unit tests for more examples.
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 | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 is compatible. |
.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 is compatible. 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. |
-
.NETCoreApp 3.1
- Microsoft.CSharp (>= 4.5.0)
- Microsoft.Diagnostics.Runtime (>= 2.0.217201)
- System.Runtime.CompilerServices.Unsafe (>= 4.7.1)
-
.NETFramework 4.7.1
- Microsoft.CSharp (>= 4.5.0)
- Microsoft.Diagnostics.Runtime (>= 2.0.217201)
- System.Runtime.CompilerServices.Unsafe (>= 4.7.1)
-
.NETStandard 2.0
- Microsoft.CSharp (>= 4.5.0)
- Microsoft.Diagnostics.Runtime (>= 2.0.217201)
- System.Runtime.CompilerServices.Unsafe (>= 4.7.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on DynaMD:
Repository | Stars |
---|---|
chrisnas/DebuggingExtensions
Host of debugging-related extensions such as post-mortem tools or WinDBG extensions
|
Version | Downloads | Last updated |
---|---|---|
1.1.0 | 230 | 3/8/2024 |
1.0.9.1 | 656 | 6/5/2021 |
1.0.9 | 398 | 6/5/2021 |
1.0.8 | 397 | 3/25/2021 |
1.0.7.3 | 881 | 7/8/2019 |
1.0.7.2 | 717 | 2/24/2019 |
1.0.7.1 | 886 | 12/3/2018 |
1.0.7 | 796 | 12/3/2018 |
1.0.6.2 | 1,140 | 7/15/2018 |
1.0.6.1 | 1,028 | 7/5/2018 |
1.0.5.2 | 992 | 7/1/2018 |
1.0.4.1 | 1,586 | 4/13/2018 |
1.0.4 | 1,058 | 4/11/2018 |
1.0.3.1 | 1,055 | 3/25/2018 |
1.0.2-pre | 965 | 3/30/2017 |
1.0.1-pre | 858 | 3/24/2017 |
1.0.0-pre | 883 | 3/23/2017 |
Added Readme.md