Full description not available
K**A
Four Stars
A good book on improving your debugging skills and how to proceed when you are stuck!
D**K
You Write Code of Any Kind, You Have Bugs
I like this book so much that I've given copies of it to my close friends. The Developer's Guide to Debugging is a fantastic little book. This book focuses on the general topic of debugging C and C++ code; however, much of what is said can be useful for other programming languages (e.g. ObjectiveC or C#). Although others have written books on debugging, this book really got to the heart of the matter for me. The focus of the book is software development, but since modern digital design is really software design also, I feel this book should prove equally useful to those doing hardware design also. Of course my specialty, Electronic System-Level design using SystemC, fits perfectly.One of the things I like is that the book is not overly long, and each section has a nice summary of key concepts at the end. I also like that it covers topics for debugging code without debug information and provides strategies for trying to finding hard to repeat bugs. They also point out how debug tools can affect the bug, which brings up the "Heisen bug".Chapter 2, A Systematic Approach to Debugging is the most important chapter of the book. If you don't read anything else, read this chapter...twice. Viewing debug as a process is very important, and I think any engineer, whether hardware or software, will benefit from this insight. We apply rigorous processes to most everything we do in engineering until we get to this. I cannot recall the number of times I've seen engineers pull up a waveform or dive into GDB before they've really considered where the issues are. What usually follows are hours of wasted forays until they stumble on the problem. Follow the systematic approach shown in this book and you will get to the root of the problem much quicker. This chapter covers both strategy and provides a classification system for bugs.Subsequent chapters provide insights into specific areas and provide valuable tips and approaches to recognizing and solving problems in this area. After reading Chapter 2, you don't have to read the book sequentially, but can go directly to any area. I recommend reading chapter 11, which will help you to write code that is easier to debug. The table of contents is a great way to look at this book. In the following, I have added my own comments following a hypen (-) after the chapter titles. 1. You Write Software You Have Bugs - even Hello World has bugs 2. A Systematic Approach to Debugging - Golden Rules and a must read for all engineers 3. Getting to the Root - Source Code Debuggers 4. Fixing Memory Problems - finding memory leaks and bad pointer problems 5. Profiling Memory Use 6. Solving Performance Problems 7. Debugging Parallel Programs - a topic not often dealt with in other books 8. Finding Environment and Compiler Problems 9. Dealing with Linking Problems 10. Advanced Debugging 11. Writing Debuggable Code - this is invaluable and should be required reading 12. How Static Checking Can Help - finding bugs before you execute a line of code! 13. SummaryA. Debugger Commands - a short list of key GDB and Visual Studio commandsB. Access to tools - an excellent list of tools you might not be familiar withBecause debugging is an ageless topic and because this book looks beyond specific tools, I feel this book will continue to be useful for many years to come.In summary, I highly recommend this book for software developers, verification engineers and system-level designers using SystemC (or any standard programming language). RTL designers might not benefit quite as much, but chapter 2 is worth the read.
S**O
Hard to read.
This book is hard to read; it's like the author is trying to write an instruction manual in undeciperable code.
J**T
Five Stars
Great!
Trustpilot
2 weeks ago
3 days ago