스레드 실행의 문제 찾기
동시 실행에서 생기는 데이터 경쟁을 검사한다. 실행 중 발견된 문제에 대해 스레드의 접근과 위치 정보를 출력해 어떤 동작이 관련됐는지 조사하도록 돕는다.
컴파일 계측의 역할
대상 코드를 계측하고 실행 시간 라이브러리와 연결한다. 단순히 프로그램의 최종 출력만 비교하는 방식과 달리 실행 중 접근에 관한 정보를 관찰한다.
계측하지 않은 코드의 영향
일부 코드나 미리 빌드된 라이브러리를 검사 없이 연결하면 경쟁을 놓치거나 잘못된 보고가 생길 수 있다. 어떤 범위를 계측했는지가 탐지 결과의 중요한 조건이다.
보고와 분석의 비용
원래 실행보다 시간과 메모리를 더 사용한다. 검사 실행에서 얻은 오류 보고를 일반 실행의 성능 수치와 섞지 않고, 보고에 나타난 관련 스레드와 호출 위치를 살펴야 한다.
관련 문서
AddressSanitizer / UndefinedBehaviorSanitizer / MemorySanitizer / 소프트웨어 테스트 / 스레드 / 디버깅