printf()-based debugging is okay when these statements are temporary, or when they are only present in development branches.<p>At $previousjob we had a guy who literally spent a year adding printf() statements everywhere to production code in order to help himself understand the existing code base he had to work on.<p>&quot;It&#x27;s not printf()-debugging, I&#x27;m doing extensive permanent instrumentation&quot;.<p>He even developed a whole framework for printf()-based debugging, to print messages in an artistic way.<p>The actual code became very hard to read due to the omnipresence of debugging cruft.<p>He also made the whole test suite dependent on the output of the debugging printf() debugging statements, making any kind of refactoring impossible.<p>I showed him how to use gdb and bought him a hard copy of the dtrace book, but it didn&#x27;t help.