This book provides a structured approach that will help programmers to identify and remove bugs in code. It is based on a four steps process: Reproduce, Diagnose, Fix, Reflect. For each activity, the author provides practical material on how perform it. The second part gives a higher vision of the debugging process and deal with topics like communicating with users or prioritizing bugs treatment. Finally, the book discusses special situations and the relationship between bugs and other areas of software development (source control, build, etc.).