Sun Oct 20 07:48:01 EDT 2019


What does that mean really?  Most of the time it means the ability to
produce useful program traces so they can be compared to the expected
behavior.  Programming is about creating hierarchy to keep code
organized, while debugging is the complete opposite: it is looking at
what is actually happening.

How do you do both at the same time?

This breaks down when you can't trust the lower layers.  Often
debugging is 1) creating a full program trace to then find out which
lower layer has the error, 2) write an extra unit test for the lower
layer and fix the corner case.