로딩
요청 처리 중입니다...

디버깅 장비 연결, 어디까지 해봤어?

 디버깅 장비 연결, 어디까지 해봤어?

"디버깅." 개발자라면 누구나 마주하는 순간입니다.

아무리 잘 설계된 코드라도 실물에서 동작하지 않을 가능성은 얼마든지 있으며, 개발자들은 그 원인을 찾아서 해결하는 ‘디버깅’이라는 과정을 거쳐야만 합니다. 여러분은 지금 어떤 방식으로 디버깅하고 계신가요?

혹시나 아직 printf()로 문제를 추적하고 계신다면, 저와 함께 한 스텝 더 나아가 보시죠. 임베디드 시스템에는 단순히 소프트웨어만으로는 볼 수 없는 동작들이 존재합니다.

특히 부트로더, 타이밍에 민감한 로직, 외부 인터럽트 같은 영역은 printf() 기반의 소프트웨어 디버깅으로는 한계에 부딪히게 됩니다. 왜 그럴까요?

printf() 방식은 타깃이 정상적으로 실행 중일 때에만 동작합니다. 즉, 타깃 내부의 코드가 해당 출력문까지 도달 후 실행되어야 로그를 볼 수 있습니다.

그러나 부트로더처럼 시스템 초기화 과정에서 하드웨어 결함이 발생하면, 타깃은 리셋되거나 멈춰서 아예 printf()가 호출되지 않습니다. 이럴 경우, 문...