Because if you invested a lot of time on carefully choosing the places where printf should be to get all the info you need, you just need to unset NDEBUG and voilà everything that you need is there again.
Of course, it’s better to use some frameworks for logging, especially because these verbose statements are often needed for assertions while unit testing the code. But it’s still equivalent to printf.
I use debugger sometimes. I actually like to load core dumps to take a look at the stack trace. But I usually don’t really need debugger interactively because when some error appears, I usually already have an idea what happened. And lots of embedded code needs timing in milliseconds, so debuggers won’t help.
Because if you invested a lot of time on carefully choosing the places where
printf
should be to get all the info you need, you just need to unsetNDEBUG
and voilà everything that you need is there again.Or, for cases where you’re doing that, use actual debug or trace logging if that is an option.
Of course, it’s better to use some frameworks for logging, especially because these verbose statements are often needed for assertions while unit testing the code. But it’s still equivalent to
printf
.I use debugger sometimes. I actually like to load core dumps to take a look at the stack trace. But I usually don’t really need debugger interactively because when some error appears, I usually already have an idea what happened. And lots of embedded code needs timing in milliseconds, so debuggers won’t help.