"이 변수를 누가 망가뜨렸나" 를 찾는 도구다.
브레이크포인트 특정 코드 위치에서 멈춘다
워치포인트 특정 데이터 주소에 접근할 때 멈춘다
언제 결정적인가
전역 변수가 어느 순간 이상한 값이 된다 누가 썼는지 코드로는 못 찾는다
스택이나 배열이 넘쳐 옆 변수를 덮는다 범인이 전혀 다른 코드다
포인터가 널이 되는 시점을 찾고 싶다
특히 메모리 오염(memory corruption) 은 원인과 증상이 멀리 떨어져 있어서 워치포인트 없이는 사실상 못 찾는다.
제약
하드웨어 비교기를 쓰므로 개수가 적다(보통 2~4개). 주소 범위와 접근 종류(읽기/쓰기/둘 다)를 지정할 수 있고, 값 조건까지 거는 것은 도구에 따라 다르다.
DWT 와 같은 유닛이다
Cortex-M 에서 워치포인트는 DWT 가 제공한다. 사이클 카운터·프로파일링과 같은 블록이라, 같은 자원을 다른 용도로 쓰고 있으면 개수가 더 줄어든다.