Wednesday, August 11, 2010

NET Debugging and C++ Debugging Resources

The following is a summary of tools and resources that you might be interested in after taking the .NET Debugging and/or C++ Debugging courses we offer at Sela.
[Shameless plug: If you haven’t taken these courses yet, I strongly suggest that you check them out. Between the two of them they have more than 20 hands-on debugging exercises which basically guarantee that you’re going to come out a WinDbg expert and be able to analyze dumps, solve problems in production, pinpoint memory leaks, and so on.]
First of all, the tools you are going to need. This is also a list of what I ask system administrators to install when giving these courses in a disconnected environment:


Now the resources you might find handy. I organized these by exercise, so that for each exercise there is at least one reference you might find useful:
  1. Setting up symbols
  1. Configuring symbols in a connected environment (KB)
  2. Obtaining Windows symbol packages
  3. How to verify symbols with symchk
  • Diagnosing a managed exception


    1. Configuring automatic crash dumps
    2. Using !PrintException and !CLRStack
  • Managed deadlock with Monitors


    1. Using !SyncBlk and SOSEX’s !dlk
    2. Analyzing Monitor-based deadlocks on 64-bit
    3. Another way to tell the sync object your thread waits for