다음을 통해 공유


/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 .

고급 컴파일러 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다.

  2. 구성 속성>C/C++>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 속성을 수정하여 /fsanitize-coverage 옵션을 설정합니다.

  4. 확인을 선택하거나 적용하여 변경 내용을 저장합니다.

참고 항목

MSVC 컴파일러 옵션
MSVC 컴파일러 명령줄 구문
/fsanitize (소독기 사용)
AddressSanitizer 빌드 및 언어 참조