Debugging Applications for MicrosoftВ® .NET and Microsoft WindowsВ® (Pro-Developer)
I've referred to the following books time and time again during my career as a software developer and debugger. I strongly recommend them to you.
Software Development
- Code Complete by Steve McConnell (Microsoft Press, 1993)
- Rapid Development by Steve McConnell (Microsoft Press, 1996)
- Debugging the Development Process by Steve Maguire (Microsoft Press, 1994)
- Dynamics of Software Development by Jim McCarthy (Microsoft Press, 1995)
This is simply the best book on software construction that I've ever read. Every developer should own a copy and read it cover to cover every year. After reading it annually for six years, I'm still learning things from this book!
This book taught me how to manage teams and schedule projects.
This book is a great introduction to the way Microsoft develops software. Obviously, since Microsoft is the most successful software company on the planet, they must be doing something right. You can learn a great deal from this book.
This book is a very interesting look at software development from the perspective of a manager with a track record for shipping great products. The rules Jim proposes are excellent because they all come from actual experience; he's not just some academic theorizing.
Languages
- The C Programming Language by Brian W. Kernighan and Dennis Ritchie (2nd ed., Prentice Hall, 1988)
- Learning C++ by Neill Graham (McGraw-Hill, 1991)
- Advanced Microsoft Visual Basic 6.0 by The Mandelbrot Set (2nd ed., Microsoft Press, 1998)
- C++ Programmer's Guide to the Standard Template Library by Mark Nelson (IDG Books, 1995)
This book is the definitive guide to C programming and the best-written technical book I've ever read.
I used this book to learn C++. Unlike other C++ doorstop books, Learning C++ is short, sweet, and to the point.
An excellent book on Visual Basic that goes into many real-world issues. The first chapter, "On Error GoTo Hell," by Peet Morris, and the sixth chapter, "Staying in Control," by Mark Pearce, are must-reads for all Visual Basic programmers. Although the chapter on hiring developers is good, I'm still not sure what is has to do with advanced Visual Basic.
I have a severe love-hate relationship with the Standard Template Library. Fortunately, Mark's book does a great job of providing samples and explaining the finer points of using this library.
Debugging and Testing
- The Practice of Programming by Brian Kernighan and Rob Pike (Addison-Wesley, 1999)
- Writing Solid Code by Steve Maguire (Microsoft Press, 1993)
- Managing the Testing Process by Rex Black (Microsoft Press, 1999)
- How Debuggers Work by Jonathan B. Rosenberg (John Wiley & Sons, 1996)
This book is a wonderful discussion of developing, debugging, and testing.
Although it focuses mainly on C programming, this book contains excellent advice on interface definitions and avoiding nasty problems in the language.
To develop better, you need to know how to test better. This excellent book will change the way you develop and the way you interact with your QA teams.
This book is an excellent introduction to how debuggers work and to the issues you need to consider when designing a debugger.
Windows and Windows Technologies
- Programming Windows by Charles Petzold (5th ed., Microsoft Press, 1999)
- Programming Applications for Microsoft Windows by Jeffrey Richter (4th ed., Microsoft Press, 1999)
- Programming Windows with MFC by Jeff Prosise (2nd ed., Microsoft Press, 1999)
- Windows++ by Paul Dilascia (Addison-Wesley, 1992)
- Essential COM by Don Box (Addison-Wesley, 1998)
- Inside Windows NT by David A. Solomon (2nd ed., Microsoft Press, 1998)
- Windows 95 System Programming Secrets by Matt Pietrek (IDG Books, 1995)
- ATL Internals by Brent Rector and Chris Sells (Addison-Wesley, 1999)
This one book will teach you everything you need to know about how Windows programs work at the most fundamental level. People could solve many of the problems they ask me about if they only had a better understanding of how message handling, graphics device interface (GDI), and other subjects work at the SDK level.
This book covers all the unique aspects of Microsoft Win32 development. The chapters on DLLs, threads, synchronization, and structured exception handling are the best descriptions available and all relate directly to debugging your problems more quickly and efficiently.
This book is the definitive guide to programming with the Microsoft Foundation Class (MFC) library. If you're using MFC, you must have this book.
Unlike other design books, which have only toy examples, this book produces a strong and viable C++ class library for Windows. I learn best by example, and this book taught me how to think in terms of objects.
In the Disassembly window ("unambiguous mode"), a Component Object Model (COM) interface is just a pointer to an array of pointers, so COM should be easy to understand. COM is so much more than just a pointer and is so fundamental to programming life, however, that you must understand how it works if you expect to stand a chance of correctly implementing and debugging your code. Don's book will give you a great start along the path of COM enlightenment.
The book is the official "big picture" view of the Windows NT kernel. Although more directly applicable for device driver writers, this book will help you make sense out of how the different parts of the operating system fit together in Windows NT.
Matt's book is out of print, but you should really try to find a copy. Debugging anything more than a simple access violation on Windows 95 and Windows 98 is an exercise in extreme frustration mainly because Windows 95 and Windows 98 are hybrid 16-bit/32-bit operating systems. Much of the information in the book, such as the Portable Executable (PE) file format chapter, applies to Windows 2000 as well.
The Active Template Library (ATL) makes the smallest and fastest COM objects around. To take full advantage of ATL, you have to have this book.
The CPU and Hardware
- Structured Computer Organization by Andrew S. Tanenbaum (4th ed., Prentice-Hall, 1998)
- Intel CPU reference manuals
- The Indispensable PC Hardware Book by Hans-Peter Messmer (3rd ed., Addison-Wesley, 1997)
An excellent introduction to computer architecture, this book is filled with information that I use to debug problems daily. The book has some typos and technical errors, but if you can get past that you'll be glad you read it.
Intel makes available, for free, the CPU manuals for their processors. If you're doing serious debugging, these manuals are extremely helpful and informative. You can download the Adobe PDF files from Intel's Literature Center at developer.intel.com/design/litcentr/index.htm . Intel also provides the manuals in book form if you prefer having hard copies.
This book is the best discussion of PC hardware around. When you need to interact with hardware, this book is an invaluable resource.