La mayor razón para la no depuración con printf() es que suele ser ineficaces, inadecuados e innecesarios.
Ineficiente: printf() y kin utilizar una gran cantidad de flash y RAM en relación a lo que está disponible en un microcontrolador pequeño, pero la mayor ineficiencia en el proceso de depuración. El cambio de lo que se registra requiere recompilar y la reprogramación de la meta, lo que ralentiza el proceso. También utiliza una UART que de lo contrario, podría estar utilizando para hacer el trabajo útil.
Insuficiente: sólo Hay tanto detalle que puede de salida a través de un enlace serial. Si el programa se bloquea, no sé exactamente donde, sólo la última salida que ha completado.
Innecesario: Muchos de los microcontroladores se puede depurar de forma remota. JTAG o protocolos propietarios pueden utilizar para detener el procesador, echa un vistazo a los registros y la memoria RAM, e incluso alterar el estado de la ejecución del procesador sin tener que volver a compilar. Esta es la razón por la que los depuradores son generalmente una mejor manera de depuración de instrucciones de impresión, incluso en un PC con un montón de espacio y energía.
Es lamentable que los más comunes microcontrolador de la plataforma para los novatos, Arduino, no tiene un depurador. El AVR admite la depuración remota, pero Atmel del debugWIRE protocolo es de propiedad exclusiva y de indocumentados. Usted puede utilizar un oficial dev junta de depuración con GDB, pero si usted tiene que usted probablemente no está demasiado preocupado acerca de Arduino ya.