Full description not available
K**R
Great debugging book.
I like the book because most of my computer courses taught very little about debugging and how to use a development environment like Microsoft Visual Studion. This book does an excellent job at explaining debugging which is essential to doing a good job at programming.
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**N
Debugging
I thought this was a good overall book on debugging. The kindle version has some quirks with spacing but is okay
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.
U**N
Buy this book! Practical, Useful, Knowledge
I've been programming as part of my job for many years and this book expanded my horizons, must read for any systems programmer.Kindle NOTE:[soapbox] Kindle version is OK for this book if you are reading cover to cover but it shows the usual artifacts of an automatic conversion without a human editor reviewing the output and fixing things like chapter headings typeset in the same font/size as the body text. IMO kindle is generally worthless for textbooks, technical manuals and references because of its naive implementation and lack of features including syntax high-lighting, linking words to glossaries, complete navigational interface, scrolling text one line at a time (to align an image with its caption on the same page for instance), inline mathematics that respect background colors and alignments, and a full text / full notes boolean search that organizes hits for individual review. [/soapbox]Languages: C/C++ centric (all examples), most of this book applies to ALL imperative languages.Operating System: It is UNIX centric but includes information for MS Visual Studio.Full Disclosure:I don't even know what VS looks like, The only time I ever use windows is fixing it for a friend, so my opinion could be worthless on Visual Studio, but the information is there. I use Macs but don't program with XCode so I can't give you any info on that specifically at all.In my experience Debugging is both an intuitive art (gained by years of experience working on real machines with real code) and a very demanding science (making observations, taking notes, well-formed hypotheses, careful testing one step at a time) My favorite quip is in section 2.1 where it mentions a problem solution method suggested by R. Feynman: "Write down the problem, think very hard, write down the answer." which is of course an "always true" statement. What this book does is help you to understand how to identify the problem so you can write it down (understand it) and then expands on the "think very hard" clause and makes numerous suggestions of how to go about that (solve it). This leads us to another statement of Feynman: 'The key to solving any problem is in looking at the problem in such a way that the solution becomes obvious.' If you get the depth of that statement, let me say: this book is that good.ALSO:Gives a tutorial on GDB using a subset of commands to get you started with GDB - This tutorial assumes you are learning GDB - not basics of debugging, machine organization and memory layout.Includes an extensive listing of up-to-date development tools, build tools, and testing tools.Gives several insights on debugging library code. (The part I needed most! - very good stuff)Up-to-date Bibliography references as late as 2009, all refs are in 21st century.Includes a xref between basic GDB commands and Visual Studio debugging commands. (Appendix A)This book has increased my skill level and enhanced my understanding of debugging - excellent work by T. Grötker.
M**.
Technical info is excellent and concise
Technical info is excellent and concise. But all controls except moving one page forward or backward do not work on Paperwhite. Recommend you order the book instead of ebook. The book will be excellent.
J**T
Five Stars
Great!
J**H
What I needed
This book explained a number of debugging techniques, but most importantly it explained when and why to use each one.The instructions were sufficient for me to get started, without too much detail to slog through.
A**A
Bien pour des débutants
Les développeurs expérimentés n'apprendront rien
S**N
enjoyable
enjoyable
D**I
Sconsigliato
Inutile. Una cozzaglia di argomenti senza né capo né coda. Gli argomenti sono trattati in maniera superficiale e gli autori non entrano mai nello specifico.
K**A
Four Stars
A good book on improving your debugging skills and how to proceed when you are stuck!
A**N
Review of Developer's Guide to Debugging
The reasons why you will need this book are clear: You write software (for desktop or embedded systems) and you will have to deal with bugs. Not only in your own code but also in the relation to other libraries and frameworks in modern design flows. It's a good idea to have systematic approach to debugging as a personal skill. And even more important'it's good to have such a strategy before you find yourself in a complex project. Debugging takes the major portion of time, it's usually performed in-between or after the implementation phase when deadlines are approaching and time is getting really a problem!The authors start with comprehensible bug scenarios (C/C++ sample source code is available for download), show usable tool environments based on industrial-strength tool suites, covering open source as well as commercial products for source code debugging, performance and memory analysis. And they give bridges to a useful test and check strategies (learning debugging not only to find bugs but also to prevent them). The authors introduce some of the the state-of-the-art debugging tools very practically with reference to the documentation (appendix A, debugger commands and appendix B, access to the tools). One could say that reading the manuals does the same job. No it doesn't, because the magic happens within the books view of tools, the discussion of mechanisms behind typical bug scenarios ("meet the bug family"), debugging strategies, and bug prevention. And to be honest, often we take the debuggers manuals when we're deeply involved in the debugging process. And that's far too late and lacks any strategy. The book gives a chance to acquire these skills before and in a structured way. The goals of each section in the book are clearly described at the beginning and summarized at the end in "lessons learned" boxes.But the authors not only discuss the pure question of 'running' or 'not running', i.e. 'bugs' or 'no bugs' on source code or linker level. Furthermore the book also covers memory problems, performance issues and the debugging of parallel programs. Both topics are crucial for modern software running on today's hardware platforms'for desktop and embedded systems. Finally, the book gives valuable hints to write debuggable code and to the usage of checks and tests. If you face the situation of time pressure, complex software structures, and nasty bugs, it is very valuable to have debugging strategies, fluid tool handling, and the infrastructure glue between always at your fingertips. I find that the "Developers Guide to Debugging" is a comprehensive introduction and a very good guide to professional debugging strategies.
Trustpilot
2 weeks ago
2 weeks ago