Debuggers are one of the most important tools in the programmer's toolkit, but also one of the most overlooked pieces of technology. They have to work in some of the harshest conditions, supporting a huge set of programming languages and aggressive transformations by compilers. What makes them work? And when don't they work?
In this talk, I will take you on a journey to some of the darkest and most confusing pits of systems programming involving debug formats, compilers and process control. I will describe situations where debuggers have failed you, and why. If you're not hacking on debuggers and are not a masochist, you will walk away with an increased appreciation of life.