/fsanitize-coverage
(소독제 검사 구성)
/fsanitize-coverage
컴파일러 옵션은 컴파일러에 사용자 정의 함수가 호출되는 다양한 종류의 계측 지점을 추가하도록 지시합니다. 이러한 옵션은 OneFuzz와 같이 사용하는 /fsanitize=fuzzer
유사 시나리오에 유용합니다. 자세한 내용은 OneFuzz 설명서 및 OneFuzz GitHub 프로젝트를 참조하세요.
구문
/fsanitize-coverage=edge
/fsanitize-coverage=inline-8bit-counters
/fsanitize-coverage=trace-cmp
/fsanitize-coverage=trace-div
/fno-sanitize-coverage=edge
/fno-sanitize-coverage=inline-8bit-counters
/fno-sanitize-coverage=trace-cmp
/fno-sanitize-coverage=trace-div
설명
실험적 /fsanitize-coverage
컴파일러 옵션은 코드 검사 지원 및 생성되는 컴파일러 제공 계측을 수정하는 다양한 옵션을 제공합니다. 이러한 모든 옵션은 옵션이 지정되면 자동으로 설정 /fsanitize=fuzzer
됩니다. 이 /fsanitize=fuzzer
옵션에는 이러한 옵션에 언급된 것과 동일한 계측 지점 및 콜백이 필요합니다.
옵션은 /fsanitize-coverage
다음과 같이 /fsanitize-coverage=edge,inline-8bit-counters,trace-cmp,trace-div
쉼표로 구분된 구문을 허용하지 않습니다. 이러한 옵션을 개별적으로 지정합니다.
옵션은 /fsanitize-coverage
Visual Studio 2022 버전 17.0부터 사용할 수 있습니다.
코드 검사
/fsanitize-coverage=edge
컴파일러 옵션을 사용하면 모든 비 중복 에지에 따라 코드 검사 계측을 사용할 수 있습니다. 다른 옵션에서 이미 제공되었거나 암시된 경우 이 옵션을 사용하지 않도록 설정하는 데 사용합니다 /fno-sanitize-coverage=edge
.
인라인 카운터
/fsanitize-coverage=inline-8bit-counters
컴파일러 옵션은 모든 관련 에지에 인라인 카운터 증분을 추가하도록 컴파일러에 지시합니다. 이 옵션은 구현해야 하는 extern "C" void __sanitizer_cov_8bit_counters_init(uint8_t *start, uint8_t *stop)
호출도 추가합니다. 인수는 생성된 모든 8비트 카운터를 포함하는 배열의 시작과 끝에 해당합니다. 다른 옵션에서 이미 제공되었거나 암시된 경우 이 옵션을 사용하지 않도록 설정하는 데 사용합니다 /fno-sanitize-coverage=inline-8bit-counters
.
추적 비교
/fsanitize-coverage=trace-cmp
컴파일러 옵션은 다음 함수에 대한 호출을 삽입하도록 컴파일러에 지시합니다.
// Before each comparison instruction of the stated size.
void __sanitizer_cov_trace_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_cmp8(uint64_t Arg1, uint64_t Arg2);
// Before each comparison instruction of the stated size, if one of the operands (Arg1) is constant.
void __sanitizer_cov_trace_const_cmp1(uint8_t Arg1, uint8_t Arg2);
void __sanitizer_cov_trace_const_cmp2(uint16_t Arg1, uint16_t Arg2);
void __sanitizer_cov_trace_const_cmp4(uint32_t Arg1, uint32_t Arg2);
void __sanitizer_cov_trace_const_cmp8(uint64_t Arg1, uint64_t Arg2);
다른 옵션에서 이미 제공되었거나 암시된 경우 이 옵션을 사용하지 않도록 설정하는 데 사용합니다 /fno-sanitize-coverage=trace-cmp
.
추적 나누기
/fsanitize-coverage=trace-div
컴파일러 옵션은 다음 함수에 대한 호출을 삽입하도록 컴파일러에 지시합니다.
// Before a division instruction of the stated size.
void __sanitizer_cov_trace_div4(uint32_t Val);
void __sanitizer_cov_trace_div8(uint64_t Val);
다른 옵션에서 이미 제공되었거나 암시된 경우 이 옵션을 사용하지 않도록 설정하는 데 사용합니다 /fno-sanitize-coverage=trace-div
.
고급 컴파일러 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다.
구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.
추가 옵션 속성을 수정하여 /fsanitize-coverage 옵션을 설정합니다.
확인을 선택하거나 적용을 선택하여 변경 내용을 저장합니다.
참고 항목
MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
/fsanitize
(소독기 사용)
AddressSanitizer 빌드 및 언어 참조