임베디드 용어 사전
디버깅

워치포인트

특정 주소에 읽기·쓰기가 일어나는 순간 멈추게 하는 기능. 값이 언제 바뀌는지 추적할 때 쓴다.

"이 변수를 누가 망가뜨렸나" 를 찾는 도구다.

브레이크포인트   특정 코드 위치에서 멈춘다
워치포인트      특정 데이터 주소에 접근할 때 멈춘다

언제 결정적인가

전역 변수가 어느 순간 이상한 값이 된다      누가 썼는지 코드로는 못 찾는다
스택이나 배열이 넘쳐 옆 변수를 덮는다        범인이 전혀 다른 코드다
포인터가 널이 되는 시점을 찾고 싶다

특히 메모리 오염(memory corruption) 은 원인과 증상이 멀리 떨어져 있어서 워치포인트 없이는 사실상 못 찾는다.

제약

하드웨어 비교기를 쓰므로 개수가 적다(보통 2~4개). 주소 범위와 접근 종류(읽기/쓰기/둘 다)를 지정할 수 있고, 값 조건까지 거는 것은 도구에 따라 다르다.

DWT 와 같은 유닛이다

Cortex-M 에서 워치포인트는 DWT 가 제공한다. 사이클 카운터·프로파일링과 같은 블록이라, 같은 자원을 다른 용도로 쓰고 있으면 개수가 더 줄어든다.

함께 보면 좋은 용어

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