하드웨어 브레이크포인트 주소를 비교기에 넣어 둔다. 플래시에서도 동작하지만 개수가 적다
소프트웨어 브레이크포인트 명령을 BKPT 로 바꿔 치기. RAM 실행이면 개수 제한이 없다
Cortex-M 은 비교기 개수가 칩마다 정해져 있다(대개 2~8개). 플래시에서 실행하는 펌웨어는 명령을 바꿔 칠 수 없으므로 하드웨어 방식만 가능하고, 그래서 "브레이크포인트를 더 못 건다" 는 상황이 생긴다.
조건부 브레이크포인트가 느린 이유
디버거가 매번 멈춰서 조건을 검사하고 다시 실행시킨다. 타이밍이 완전히 달라지므로 통신·모터 제어 코드에서는 쓸 수 없다.
멈출 수 없는 코드에서는
GPIO 토글 + 로직 분석기
RTT · ITM 로그
변수에 기록해 두고 나중에 읽기
디버거로 멈추는 순간 시스템이 달라진다는 점을 늘 염두에 둔다 — 워치독이 물거나, 통신 상대가 타임아웃을 내거나, 모터가 계속 돈다.