CLRMD: .NET Crash Dump and Live Process Inspection

Lee Culver, a software developer on the .NET Runtime team, has shipped an awesome managed code library for anyone interested in analysing memory dumps and the internals of running .NET applications.  Known as CLRMD, this library allows you to write code that does all the kinds of stuff you do with the SOS, PSSCOR2, PSSCOR4 …


PerfView – a powerful tool for investigating .NET performance issues

Vance Morrison, Performance Architect on the Common Language Runtime (CLR) team writes and maintains a very powerful tool called PerfView that harnesses the power of Event Tracing for Windows (ETW) data produced by the CLR. The tool can be download here. Although he had previously published some tutorial videos as a ZIP download on his…


Great article and free eBook on .NET Memory Management

This article by Chris Farrell is a great introduction to how .NET manages memory for applications. But even better it is actually chapter 1 of an eBook “Under the Hood of .NET Memory Management” that is available for free! Thanks Chris and Nick! HTH Doug


New CLR and .NET Performance tool

Vance Morrison, CLR performance architect here at Microsoft, has released a new tool for conducting performance investigations on .NET applications. It is called PerfView and you can read more about it on his post here. You can download it here. It is designed to have as low an overhead on the application being investigated although…


Tips for successful .NET Debugging with WinDBG

Here are my tips for pain free .NET debugging with WinDBG 1) Always use a 32-bit debugger for a 32-bit process and a 64-bit debugger for a 64-bit process, both to generate the dump and to analyse it. Use usermode dumps only (managed debugger extensions are not expected to work with kernel mode) and ensure…


Version history of the CLR 4.0

[ update 18/6/2012 LDR.569 added ] [ update 16/4/2012 – changed the format to make LDR/GDR branch versioning clearer at the suggestion of Vivek Mishra (thanks!) ; added .468 and  .476 ] [ update 15/2/2013 – added MS12-074, 2733944, 2756195 ] [ update 17/4/2013 – added 1001, 2001, 2004 and 2008 ] Following on from…


Updated the “Version history of the CLR 2.0”

I’ve done an update to my “Version history of the CLR 2.0” page, adding in numerous fixes (some new, some quite old) that I had not got round to adding. HTH Doug


You spent HOW much on our new server and the app slowed DOWN??!!

I had a support case recently where the customer had moved their server farm onto brand new hardware, each server with lots of CPUs. At the same time they had taken the operating system from Windows Server 2003 to Windows Server 2008 R2. I forget how many CPUs they had but let’s just say that…


Long paths and .NET

I was helping a colleague recently on an issue to do with long file system paths and the challenges and limitations of handling them in .NET. I knew there were issues but could not recall all the details. Anyway, I just came across a wrapper class on Codeplex to assist in handling long paths. The…


Finding the .NET version in a debug session

An interesting little question came up on one of our internal discussion groups today. “How can I find in a debug session the version of the .NET runtime being used in the debuggee?” [in an automated/scripted fashion and without using debugger extensions or symbols] Here is what I came up with: 0:029> !for_each_module .if (…