I bought Advanced Windows Debugging book last week. Shortest review would be: if you’re serious about developing big applications for Windows platform - just get it. There are chapters that were of less interest for me (yet?) - security or interprocess communication, but everyone will find chapters that justify every price. I found parts about heap/stack corruption, resource leaks and Vista especially valuable (visit http://advancedwindowsdebugging.com/ - I think there’s a sample available for download). I’ve been using some of the described tools when preparing Games for Windows support for The Witcher (try using AppVerifier without WinDBG, it’s almost pointless, WinDBG can give you just so much extra info), but it turned out I only scratched the surface. Microsoft should really implement this functionality in Visual Studio one day. Simple example - imagine all you have is memory address and you’d like to see if it maps to any call stack entry. Sure, you can try to find it manually in map file, but under WinDBG all you have to do is type dds [address]. Heap extensions are just crazy (how about dumping all blocks of specified heap and trying to resolve the first DWORD of every block? How about built-in GC algorithm to detect all the active blocks that are not referenced anywhere in the process? Searching for specified pattern in heap allocations? Can all be easily done).
Book isnt cheap, but it’s 800+ pages of highly informative condensed content, it’s almost impossible to digest at once, so you’ll most probably read it several times. What’s more important - you’ll learn something new with every reading. Wholeheartedly recommended.
[Sidenote: I ordered it from Amazon (UK) on Thursday, around 10am, it was in my office Friday, 1pm. That’s what I call good postal service]