![]() |
|
Everybody who has ever taken part in a real software development project (one of those which actually ship products and face deadlines) will admit that our industry has a long way to go to meet the first cluster of requirements. At the current state of the art, the problem is one of youth, inexperience and scarce spirit of group among the players in the sector more than the lack of formal instruments in the software designer's toolbox.
Where the category of programmers really embarrassingly lags behind is the standardized, rational approach to problems (relabeled "bugs" in computer jargon). As in every complex product of the intellect, programmers invariably put bugs into the source code they write at first. This wouldn't represent a major problem if subsequent passes of the development process were able to consistently find and correct them.
Unfortunately, debugging appears to be a black discipline to learn in the most painful and ineffective way, in the field and perhaps with an impending deadline. It's even more painful in complex multi-thread environments such as Microsoft Windows.
In Debugging Applications, John Robbins, magically combining his expertise as a veteran of debuggers, troubleshooting, low-level Win32 programming and project deadlines alike, comes to the rescue with this badly needed guide to the voodoo world of debugging. Robbins manages to put together a coherent manual that entertains you in its theoretical dissertations and imparts a few gems of down-to-the-metal programming in the more technical sections. This is a guy who feels at home in front of a BSOD (the feared Blue Screen Of Death of Windows NT), yet communicates his knowledge in English rather than in hexadecimal.
The opening part of Debugging Applications introduces readers to the world of systematic debugging. Pair it up with Chapter 4 and you have a gradual introduction to the fundamental notions of how to formally define a bug, how to practice preventive programming, how to approach bug hunting, and the role of the debugger. Subsequent chapters jump right into the trenches with a comprehensive analysis of the powerful Visual C++ debugger and the somewhat less powerful Visual Basic counterpart. Every feature gets fair coverage, and guidelines for their pragmatic utilization mix naturally with the more descriptive sections.
Chapters 8 through 15 offer a pretty heterogeneous spectrum of debugging scenarios and present a variety of advanced techniques to seize unexpected behaviors even in the most impervious situations. The chapters that deal with multithreading and remote debugging have arguably the most useful content, while Chapter 8 provides a convincing answer to every application developer's most intriguing question: "what on Earth can I do with the crash address reported by Windows upon a critical error?"
Debugging Applications is one of the precious few books on Windows debugging really written by an experienced troubleshooter for long-suffering technicians. As such, it will pay for itself the first time you apply its instructions in a real project. This is probably not your Ph.D. professor's academic dream manual, and some parts could have been generalized and developed in a more educational way, but all in all this book will provide a productivity boost you simply should not miss if you make a living programming for the Windows platform -- and it's an instructive read nonetheless.
-- Davide Marcato (marcato@programmers.net)
|
Explanation of ERCB rating scale:
|