Developer Advanced Debugging Course Synopsis
- Introduction
- Prerequisites to debugging
- Avoiding the debugger
- ASSERT() and VERIFY()
- Use the compiler
- Compiler flags
- Debug builds
- Use analysis tools
- Use free tools
- The Debugging Process
- Duplicate the bug
- Describe the bug
- Always assume that the bug is yours
- Divide and conquer
- Think creatively
- Leverage tools
- Start heavy debugging
- Verify that the bug is fixed
- Learn and share
- Symbols
- Why symbols are important
- How to install symbols
- Symbol paths
- Symbol server and beyond
- Autoexp.dat
- Custom display of structures/classes
- Don’t step into
- The Watch Window
- Pseudo variables
- Registers
- Formatting for expressions
- Formatting for memory dumps
- Displaying arrays
- Function evaluation
- Limitations
- Calculator
- Assembly operators
- Timing code
- The Disassembly Window
- Decode a "random" address
- Breakpoints
- Simple breakpoints
- Counted breakpoints
- Conditional breakpoints
- Memory breakpoints
- Breakpoints on system/exported functions
- Breakpoint a specific thread
- Advanced breakpoint syntax
- Breakpoint implementation
- Memory
- Categories of allocated memory
- Memory allocators
- CRT debug heap
- Debugging memory leaks
- Debugging memory corruption
- Multiple Threads
- Advice
- Race conditions & deadlocks
- Thread id
- Per thread breakpoints
- Things affecting multi-threaded debugging
- Thread creation routines
- Thread names
- Exceptions
- WIN32 exceptions (SEH)
- Decoding C++ exceptions
- Mixing C++ and SEH
- Remote Debugging
- When to use remote debugging
- Remote debugging made easy
- Manual setup
- VS 6
- VS 7 & 7.1
- Remote debugging with DCOM and the MDM
- Remote Just-In-Time debugging
- Restrictions
- Debugging Services
- How to debug services
- Problems
- Debugging Problems
- Debugging DLLs
- Debug works - release Fails
- Release works - debug Fails
- Works in debugger - Not outside & vice versa
- Unicode tricks
- Assembler
- How much Assembler do you need to know?
- Calling conventions
- Reading the stack
- What is FPO and why does it matter
- Why a map is important
- How to recover a corrupt stack
- WinDbg
- What is WinDbg
- Minimal command reference
- Why WinDbg is important
- Tools
- Resources
- MSDN
- Tools
- Books
- Web
- Conclusion