Most of my paid work involves deploying software systems, which means I spend a lot of time trying to answer the following questions:
- This software works on the original developer’s machine, so why doesn’t it work on mine?
- This software worked on my machine yesterday, so why doesn’t it work today?
That’s a kind of debugging, but it’s a different kind of debugging from normal software debugging. Normal debugging is usually about the logic of the code, but deployment debugging is usually about the interaction between the code and its environment. Even when the root cause is a logic bug, the fact that the software apparently worked on another machine means that the environment is usually involved somehow.
So, instead of using normal debugging tools like
gdb, I have another toolset for debugging
deployments. My favourite tool for “Why isn’t this software working on this machine?” is