임베디드 용어 사전
디버깅

브레이크포인트

실행을 특정 위치에서 멈추게 하는 장치. 하드웨어 방식은 개수가 정해져 있다.

하드웨어 브레이크포인트   주소를 비교기에 넣어 둔다. 플래시에서도 동작하지만 개수가 적다
소프트웨어 브레이크포인트  명령을 BKPT 로 바꿔 치기. RAM 실행이면 개수 제한이 없다

Cortex-M 은 비교기 개수가 칩마다 정해져 있다(대개 2~8개). 플래시에서 실행하는 펌웨어는 명령을 바꿔 칠 수 없으므로 하드웨어 방식만 가능하고, 그래서 "브레이크포인트를 더 못 건다" 는 상황이 생긴다.

조건부 브레이크포인트가 느린 이유

디버거가 매번 멈춰서 조건을 검사하고 다시 실행시킨다. 타이밍이 완전히 달라지므로 통신·모터 제어 코드에서는 쓸 수 없다.

멈출 수 없는 코드에서는

GPIO 토글 + 로직 분석기
RTT · ITM 로그
변수에 기록해 두고 나중에 읽기

디버거로 멈추는 순간 시스템이 달라진다는 점을 늘 염두에 둔다 — 워치독이 물거나, 통신 상대가 타임아웃을 내거나, 모터가 계속 돈다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 디버거 — SWD 로 칩 안을 들여다보기