Unable to load SOS in WinDbg
The CLR runtime dll was renamed to clr.dll
with .NET 4. So in order to load the correct version of SOS you need to adjust your .loadby
command. I.e.
.loadby sos clr
Also, if you're on 64 bit, you should install the 32 bit version of Debugging Tools for Windows as well in order to debug 32 bit apps. They install side-by-side, so there's no problem in having both the 32 bit and the 64 bit version on the same machine.
I would advice against copying SOS.dll. SOS needs to match the exact version of the framework, so as long as you load it from the framework directory using .loadby
, you're all set.
Answers above need improvement, since over the course of time things has been easier to handle sos loading.
JOHN ROBBINS has nice article around it, See that Microsoft symbol servers are configured in symbol file path and run !analyze -v on windbg prompt, this will do the trick it will download relevant sos files. To verify run .chain on the prompt and you will see the loaded dll.
The WinDbg command 'g' means [Continue]
Since you're opening a dump-file there is no way to 'continue', it only contains the process memory.
So the message " No runnable debuggees error in 'g' " is logical in your case since the process is not running.
Concerning loading the correct version of SOS use the following command depending on the .NET version.
.NET 4 and higher .loadby sos
.NET 3.5 and 2 .loadby sos mscorwks
.NET 1.0 and 1.1 .load clr10\sos