위키득계정 ↗
기술

SanitizerCoverage

SanitizerCoverage기술
소속
LLVM과 Clang
분류
실행 흐름 계측
계측 단위 예
함수 기본 블록 간선
활용
커버리지와 퍼징 피드백
SanitizerCoverage는 LLVM의 실행 흐름 계측 기능이다. 함수와 기본 블록, 제어 흐름 간선 등의 위치에 처리를 넣어 실행 정보를 수집하도록 한다.

흐름에 콜백 연결

컴파일러가 선택한 위치에서 사용자 정의 함수를 호출하도록 코드를 계측한다. 콜백과 가드 등의 정보를 통해 어떤 위치가 실행되었는지 기록할 수 있다. 계측 방식과 최적화에 따라 실제로 관찰하는 위치의 의미가 달라질 수 있다.

피드백과 보고

실행 정보를 퍼징의 탐색 피드백 등에 활용할 수 있다. 기본 보고 및 표시 지원도 있지만 소스 중심의 커버리지 시각화만 필요하다면 다른 계측 경로가 더 적합할 수 있다. 사용자 콜백을 작성하는 기반과 완성된 보고 도구의 역할을 구분한다.

계측 범위의 한계

일부 파일만 계측하면 그 밖의 실행 흐름은 기록에 나타나지 않을 수 있다. 콜백의 처리 비용과 동시 실행도 수집 설계에 영향을 준다. 많은 위치에 도달한 결과가 프로그램의 모든 의미와 오류 조건을 검증했다는 뜻은 아니다.

관련 문서

libFuzzer / LLVM Cov / Clang / DataFlowSanitizer