Chapter 10 of 10All chapters
Chapter 10 of 10
The hard ones
Intermittent, environment-specific, invisible.
When it only fails sometimes
Intermittent failures usually mean timing, shared state or ordering. Look for concurrency, caches, clocks and anything global before suspecting the compiler.
- Works on my machine means a difference in version, config, data or permissions.
- Compare the two environments systematically rather than by intuition.
Knowing when to stop
Explaining the problem out loud, taking a break or asking a colleague resolves stuck debugging more often than another hour of staring. The bug is a wrong belief, and those are hard to see alone.