So we have a bunch of debugger extensions that we need to use depending on the situation. So here are the extensions that can depend on various situations and when to use which. The first thing to decide is to load the right DLL for the Framework version and Process version:
|Extension||Process Version||Framework Version|
|clr10\sos.dll||any 32-bit process||.NET 1.0/.NET 1.1|
|Framework\v2.0.50727\sos.dll||any 32-bit process||.NET 2.0/.NET 3.0/.NET 3.5|
|Framework64\v2.0.50727\sos.dll||any 64-bit process||.NET 2.0/.NET 3.0/.NET 3.5|
|IISInfo.dll||any 32-bit process||N/A – IIS extension|
Keep in mind that you can run a 32-bit process on a 64-bit operating system. You would still use the 32-bit files to debug it.
If you are dealing with a crash, a good starting point is always to run !analyze -v. This will check for known issues and help to narrow down where the problem is for a crash. It isn’t perfect for .NET, but will do a great job getting you something to go on.
Once you have the right extension loaded, then you can start troubleshooting things.
Note: In the future, I hope to have a new extension that will run on top of SOS.dll and allow you to do some more advanced functions. This will give similar results to the clr10\sos.dll extension. But it will be able to run against all versions of the framework. I am still flushing things out on that, feel free to give me your comments here.