Debugging, like programming, is both art and science. There are wonderful new tools to support finding that defect that someone else put into your code - hey it wasn't me my dog made that typo that took days to find ...
The oldest debugging technique that I know is the language equivalent of Ruby's
puts "DEBUG my_variable: #{my_variable}"
The ubiquitous named variable value output. It not only gices you the value of the variable it also provides a tracing capability.
Regardless of how good our tools get, sometimes it is the old ways that help find the problems. That is why I wrote the "debug_me" gem a long time ago. I still use it in large rails applications trying to find out which of the thousands of M or V or C components is causing the problem.
Just because something is old, doesn't mean it has no value.
0-*