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 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:
- Windows XP SP2 or later + symbols
- Visual Studio 2008 or Visual Studio 2010
- Visual c ++ 2010 redistributable (x86) + symbols
- . NET Framework 3.5 SP1 + symbols
- . NET Framework 4.0 + symbols
- Debugging tools for Windows 32-bit
- Windows support tools
- Windows Resource Kit tools
- Sysinternals suite
- CLR profiler 2.0
- Application compatibility toolkit 5.6
- Application verifier 32-bit
- . Net Reflector
- Sosex debugging Extension
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:
-
- Setting up symbols
- Signing ing symbols in a connected environment (KB)
- Obtaining windows symbol packages
- How to verify symbols with symchk
- Diagnosing a managed exception
- Refreshing automatic crash dumps
- Using! Printexception and! Clrstack
-
- Managed deadlock with monitors
- Using! Syncblk and sosex's! Dlk
- Analyzing Monitor-based deadlocks on 64-bit
- Another way to tell the sync object your thread waits
-
- Managed Memory Leak with static event
- Diagnosing a memory leak using SOS's! Dumpheap, CLR profiler, and Hawkeye
- Inspecting a managed heap! Dumpheap
- Diagnosing a memory leak caused by event handlers
-
- Managed Memory Leak with finalizer
- Unblock my finalizer
- Don't blindly count on a finalizer
- File Access problem with Process Monitor
- . Net file access in Process Monitor
- The case of the slow logons (Process Monitor)
-
- Application compatibility fix
- Creating a registry redirection (virtualregistry)
- Version lie shims
- Using the correctfilepaths Shim
-
- Diagnosing assembly loading with fusion Log Viewer
- Using fuslogvw to diagnose binding issues
- Assembly private bin path pitfall
-
- Finalization Race Condition
- Finalizer vs. Application
-
- Reader-writer lock deadlock
- Implementing a RWL using a semaphore
- COM and sta Memory Leak
- Find the sta thread to which we're re switching from sendreceive2
- Find the sta thread to which we're re switching from gettosta
- Inspecting the oxidentry structure in gettosta
-
- Comparing out-of-memory exceptions
- Memory display tool for virtual memory and GC heap
-
- Unmanaged memory leak with umdh
- How to Use umdh to find memory leaks
- Getprocessheap and _ get_heap_handle
-
- Unmanaged deadlock with critical sections
- Refreshing the internals of critical sections
- Using! CS .! Locks (with case studies)
-
- Unmanaged heap upload uption with application Verifier
- Processing heap-based buffer overflows
- Using pageheap.exe (KB)
- Unmanaged stack snapshot uption
- Common stack analysis commands
-
- File leak with process monitor and handle tracing
- See handle open call stacks
- The oh.exe Tool
-
- Invalid handle problems with handle tracing
- Use! Htrace to detect an invalid handle reference and when it was closed
- Handle application verifier stops
-
- C ++ runtime checks
- /RTC compiler Switch
-
- Multi-object deadlock with WCT and local kernel debugging
- Vista wait chain Traversal
- WCT debugging extension (also on codeplex)
-
- Diagnosing a C ++ exception
- Decoding the parameters of a thrown C ++ exception
- Exception-related commands
Finally, there's my three year old list of debugging tools that coshould also be considered useful.
Address: http://blogs.microsoft.co.il/blogs/sasha/archive/2010/08/10/net-debugging-and-c-debugging-resources.aspx