printf ()로 디버깅하지 않는 더 큰 이유는 일반적으로 비효율적이며 부적절하고 불필요하기 때문입니다.
비효율적 : printf () 및 kin은 소형 마이크로 컨트롤러에서 사용 가능한 것에 비해 많은 플래시 및 RAM을 사용하지만 실제 디버깅에서는 비 효율성이 더 큽니다. 기록되는 내용을 변경하려면 대상을 다시 컴파일하고 다시 프로그래밍해야하므로 프로세스 속도가 느려집니다. 또한 유용한 작업을 수행하는 데 사용할 수있는 UART를 사용합니다.
부적절 : 직렬 링크를 통해 출력 할 수있는 세부 사항이 너무 많습니다. 프로그램이 중단되면 마지막 출력이 완료된 위치를 정확히 알 수 없습니다.
불필요 : 많은 마이크로 컨트롤러를 원격으로 디버깅 할 수 있습니다. JTAG 또는 독점 프로토콜을 사용하여 프로세서를 일시 중지하고 레지스터와 RAM을 들여다 볼 수 있으며 심지어 재 컴파일하지 않고도 실행중인 프로세서의 상태를 변경할 수도 있습니다. 그렇기 때문에 디버거는 일반적으로 공간과 전력이 많은 PC에서도 print 문보다 더 나은 디버깅 방법입니다.
불행히도 초보자를위한 가장 일반적인 마이크로 컨트롤러 플랫폼 인 Arduino에는 디버거가 없습니다. AVR은 원격 디버깅을 지원하지만 Atmel의 debugWIRE 프로토콜은 독점적이며 문서화되어 있지 않습니다. 공식 개발자 보드를 사용하여 GDB로 디버깅 할 수 있지만 Arduino에 대해 걱정하지 않아도됩니다.