위키득계정 ↗
기술

ThreadSanitizer

ThreadSanitizer기술
약칭
TSan
주요 대상
데이터 경쟁
구성
컴파일 계측 모듈과 실행 라이브러리
기반 환경
Clang의 스레드 검사
ThreadSanitizer는 여러 스레드 사이에서 발생하는 데이터 경쟁을 찾는 도구다. 컴파일러가 넣은 계측과 실행 시간 라이브러리를 이용해 문제에 관련된 접근과 호출 위치를 보고한다.

스레드 실행의 문제 찾기

동시 실행에서 생기는 데이터 경쟁을 검사한다. 실행 중 발견된 문제에 대해 스레드의 접근과 위치 정보를 출력해 어떤 동작이 관련됐는지 조사하도록 돕는다.

컴파일 계측의 역할

대상 코드를 계측하고 실행 시간 라이브러리와 연결한다. 단순히 프로그램의 최종 출력만 비교하는 방식과 달리 실행 중 접근에 관한 정보를 관찰한다.

계측하지 않은 코드의 영향

일부 코드나 미리 빌드된 라이브러리를 검사 없이 연결하면 경쟁을 놓치거나 잘못된 보고가 생길 수 있다. 어떤 범위를 계측했는지가 탐지 결과의 중요한 조건이다.

보고와 분석의 비용

원래 실행보다 시간과 메모리를 더 사용한다. 검사 실행에서 얻은 오류 보고를 일반 실행의 성능 수치와 섞지 않고, 보고에 나타난 관련 스레드와 호출 위치를 살펴야 한다.

관련 문서

AddressSanitizer / UndefinedBehaviorSanitizer / MemorySanitizer / 소프트웨어 테스트 / 스레드 / 디버깅