JTAG으로 레지스터 덤프 분석해 초기화 오류 발견 경험
임베디드 수업에서 JTAG 디버거를 처음 써봤을 때, 소프트웨어 디버거와 가장 다른 점이 하드웨어와 소프트웨어 경계를 직접 들여다볼 수 있다는 점이었습니다. OpenOCD와 GDB를 연결해 마이크로컨트롤러 레지스터 값을 읽으면서, 코드 실행 중 메모리 상태가 어떻게 바뀌는지 단계별로 추적할 수 있었습니다. 가장 도움이 됐던 순간은 타이밍 문제로 보이던 버그가 실제로 초기화 순서 오류였다는 걸 레지스터 덤프로 확인했을 때였습니다. printf 디버깅으로는 찾기 어려운 류의 문제였는데, JTAG을 쓰면서 하드웨어 레벨 가시성이 디버깅 범위를 얼마나 넓혀주는지를 직접 체감했습니다. 이 경험이 지금도 로우 레벨 코드 작업 시 계측 도구를 먼저 갖추는 습관으로 이어졌습니다.