Root Cause Tracing Skill
Systematically identify root causes of bugs and system failures.
When to Use
- Bug investigation
- Production incidents
- Performance issues
- System failures
Analysis Frameworks
- 5 Whys: Ask "why?" repeatedly
- Fishbone Diagram: Categorize causes
- Fault Tree Analysis: Logic tree of failures
- Timeline Analysis: Chronological events
Debugging Process
- Reproduce: Create minimal reproduction
- Isolate: Narrow down location
- Trace: Follow execution path
- Hypothesis: Form theory
- Test: Verify theory
- Fix: Implement solution
- Verify: Confirm fix works
Tools
- Debuggers (gdb, lldb, pdb)
- Logging and tracing
- Profilers
- Stack traces
- Network analyzers
5 Whys Example
Problem: Website is slow
Why? Database queries are slow
Why? No indexes on frequently queried columns
Why? Database schema not optimized
Why? Initial design didn't account for scale
Why? No performance testing during development
Root Cause: Lack of performance testing
Best Practices
- Document investigation steps
- Don't jump to conclusions
- Test hypotheses systematically
- Consider multiple causes
- Implement preventive measures
Resources
- The Art of Debugging: https://nostarch.com/debugging
- Debugging Teams: https://www.oreilly.com/library/view/debugging-teams/9781491932049/
