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.
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.
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.
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.
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.
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.