In this series of article, we’re retracing how I debugged an InvalidProgramException, caused by a bug in the Datadog profiler, from a memory dump sent by a customer. The first part of the investigation is an introduction to using a memory dump from a .NET application to find the information you seek.
Even with years of experience, WebRequest managed to surprise me.

Using startup hooks to automatically fetch GC metrics from any .net core application.

How to inspect arbitrary values in the memory of a .net process on Linux… And find an unexpected bug in the process.
Non-exhaustive list of code patterns to avoid in C#, either because they are risky or perform poorly.
Explaining the ThreadPool starvation issue, and how it can be made worse by the way work-items are queued.

Inspiration for quarantine days: how to connect a Raspberry Pi to a training bike to stream the speed to a computer and pause a video when below 20 km/h

Leveraging the async machinery to transparently switch to the UI thread when needed.
Using debugging tools to get rid of a nagging popup.

How to implement the WinDbg DumpStackObjects command in ClrMD.
