/effective-debugging

Code examples used in the book Effective Debugging (Addison-Wesley, 2016)

Primary LanguageJavaApache License 2.0Apache-2.0

DOI

Effective Debugging: Source Code

This repository contains the source code used in the book Effective Debugging (Addison-Wesley, 2016).

Chapter 1: High-Level Strategies

Item 7: Diversify Your Build and Execution Environment

Chapter 2: General-Purpose Methods and Practices

Item 12: Automate Complex Testing Scenarios

Chapter 4: Debugger Techniques

Item 31: Familiarize Yourself with Reverse Debugging

Item 33: Look for Errors by Examining the Values of Variables and Expressions

Item 37: Know How to View Assembly Code and Raw Memory

Chapter 5: Programming Techniques

Item 41: Add Logging Statements

Item 42: Use Unit Tests

Item 43: Use Assertions

Item 49: Fix the Bug's Cause, Rather Than Its Symptom

Chapter 6: Compile-Time Techniques

Item 50: Examine Generated Code

Item 51: Use Static Program Analysis

Item 52: Configure Deterministic Builds and Executions

Item 53: Configure the Use of Debugging Libraries and Checks

Chapter 7: Runtime Techniques

Item 57: Profile the Operation of Systems and Processes

Item 59: Use Dynamic Program Analysis Tools

Chapter 8: Debugging Multi-threaded Code

Item 60: Analyze Deadlocks with Postmortem Debugging

Item 61: Capture and Replicate

Item 62: Uncover Deadlocks and Race Conditions with Specialized Tools

Item 64: Investigate Scalability Issues by Looking at Contention

Item 65: Locate False Sharing by Using Performance Counters

Item 66: Consider Rewriting the Code Using Higher-Level Abstractions