Getting started with Windbg and managed code

Windbg (or wind bag as my friend calls it) is my one stop shop for almost everything debugging related. It’s great for finding issues that only happen on a client machine and you don’t want a full blown Visual Studio installation mucking up your repro.

With the sos extension Windbg becomes useful at debugging managed code as well. To get started with Windbg and sos fire up Windbg and attach to a managed process. I’m using .Net 2.0 for my development so I need to load the sos dll from the Framework directory (for 1.1 .Net use .load clr10\sos.dll instead) . I can do this with the .loadby command:

0:000> .loadby sos mscorwks

This tells Windbg to load the debugger extension sos.dll from the same directory that the current process has mscorwks.dll loaded from.
Next we hit Debug | Go (or F5) and the process is now happily running away.

Once the problem occurs go back to Windbg and press Debug | Break and we can now examine the process state in safety. If at any point you need help with the sos commands, !help will get you going.

Coming up next week: using Windbg to debug exceptions, deadlocks, and memory problems in managed code.

Comments (1)

  1. Windbg, is there anything it can’t do? CLR Profiler is great for getting an overview of memory allocations

Skip to main content