I have always been impressed by developers who make do without a debugger, and have often wished I could be more like them. I vaguely recall a colleague saying he never used a debugger, favoring
gdb. Also, in my rookie years, I vividly recall chasing a kernel bug with a friend who was using
objdump and the source of a much older kernel:
“Richard, shouldn’t you at least use the correct source?”
“Meh … they’re close enough.”
I’m still impressed.
Now that I have coded for some years, I’ve noticed that I have picked up some bad habits along the way. Over-dependence on the debugger is one of them. I often use it as a high-powered crutch, which frequently leads me waist-deep into stack traces, rarely stopping to think things through. I get lost inside 20 levels of recursion and wonder why an irrelevant variable is being tickled.
Granted, there are many good uses for a debugger, but I’m at 40% on the good use scale. My uses usually start benign but then degrade into cancerous abstractions. So, for my 20th GNU Compiler Collection (GCC) hacking anniversary, I decided to give myself the challenge of one month without a debugger. Here is the tale.
Continue reading “Improve your code: Tales from confinement without a debugger”