Another example. I can totally remove the variable i, just using the stack, so a debugger (or, in general, having the tracing enabled) cannot even find something to change about it.
Ethan> Debugging is challenging enough as it is -- why would you want to Ethan> make it even more difficult?<snarky> I don't know. Maybe he wants his program to run faster. </snarky>
"Aggressive" optimizations can be enabled with explicit options, in order to leave normal "debugger-prone" code.
If you use print statements for the bulk of your debugging (many people do), unrolling loops doesn't affect your debugging ability.
It's a common practice. Also IDEs helps a lot, and advanced interactive shells too (such as DreamPie).