The few "debugging extensions" that have been created at Criteo to help post-mortem .NET applications analysis are now available:
- as a stand alone tool to load a .NET application memory dump and start automatic thread, thread pool, tasks and timer analysis.
- as a WinDBG extension to get the same level of details plus more commands such as getting a method signature based on its address.
More analyzers and commands will be added as needed.
Most of the code is detailed in the blog series related to ClrMD:
Part 1: Bootstrap ClrMD to load a dump.
Part 2: Find duplicated strings with ClrMD heap traversing.
Part 3: List timers by following static fields links.
Part 4: Identify timers callback and other properties.
Part 5: Use ClrMD to extend SOS in WinDBG.
Part 6: Manipulate memory structures like real objects.
Part 7: Manipulate nested structs using dynamic.
Part 8: Spelunking inside the .NET Thread Pool.
Part 9: Deciphering Tasks and Thread Pool items.
The detailed features are available either as a stand alone tool or a WinDBG extension. More commands will be added as needed.
The DebuggingExtensions
Visual Studio 2017 solution contains two projects:
-
ClrMDStudio
: WPF application that loads a dump file on which commands to be executed -
gsose
: "Grand Son Of Strike Extension" for WinDBG that exposes the same commands (and more)
These projects depends on Nuget packages: