그라운드 임베디드 유튜브 구독

노트 / 계측과 디버깅 장비

디버거: 펌웨어를 한 줄씩 멈춰 보기

ST-LINK, J-Link로 펌웨어를 올리고 중단점, 변수 감시, 레지스터 보기로 문제를 찾습니다. printf보다 빠른 디버깅.

GROUND EMBEDDED · 정리 노트계측 장비 05디버거01연결02할 수 있는 것03주의

연결

Cortex-M은 SWD 인터페이스(SWDIO, SWCLK, GND, 필요하면 NRST, VTref)로 디버거와 연결됩니다. 보드 설계 때 SWD 핀을 커넥터로 꼭 빼 둡니다.

할 수 있는 것

  • 중단점: 특정 줄에서 멈춤
  • 단계 실행: 한 줄씩, 함수 안으로 들어가거나 넘어가기
  • 변수 감시: 멈춘 상태에서 값 확인, 일부 도구는 실행 중 실시간 갱신
  • 레지스터 / 주변장치 보기: GPIO, 타이머 레지스터가 설정대로 들어갔는지 SVD 파일로 해석해서 보기
  • 메모리 보기: 버퍼 내용, 스택 영역
  • 데이터 감시점: 특정 변수가 바뀌는 순간 멈춤. 누가 값을 망가뜨리는지 찾을 때 강력

주의

  • 모터 제어처럼 실시간 동작 중에 멈추면 PWM이 그대로 유지되어 위험할 수 있습니다. 타이머의 디버그 정지 기능(DBGMCU)으로 멈출 때 출력도 끄게 설정합니다.
  • 최적화(-O2)를 켜면 변수가 사라지거나 줄 순서가 뒤섞여 보입니다. 디버깅할 때는 -Og를 씁니다.
  • 저전력 모드에 들어가면 디버그 연결이 끊길 수 있습니다.