다음을 통해 공유


AddressSanitizer 런타임 옵션

다음 표에서는 AddressSanitizer에 대한 옵션을 나열합니다. 환경 변수를 ASAN_OPTIONS 통해 또는 __asan_default_options() 설명된 사용자 함수를 재정의 하여 사용하도록 설정합니다.

비고

이러한 설명은 Clang의 런타임 옵션과 다를 수 있는 MSVC(Microsoft Visual C++) 특정 동작을 설명합니다.

Flag 기본값 Description
abort_on_error false 이 경우 true오류 보고서를 인쇄한 후 대신 abort() ASan이 호출 _exit() 됩니다.
alloc_dealloc_mismatch false 등과 같은 malloc/deletenew[]/free일치하지 않는 메모리 작업을 검색합니다.
allocator_frees_and_returns_null_on_realloc_zero true truerealloc(p, 0)free(p) 설정하면 기본적으로 POSIX 표준과 동일합니다. 이 값으로 falserealloc(p, 0) 설정하면 사용할 수 없는 할당된 공간에 대한 포인터를 반환합니다.
allocator_may_return_null false 이 경우 true할당자는 메모리가 부족할 때 반환됩니다 nullptr . ASan은 충돌하는 대신 할당자의 실패에 대한 경고를 내보내고 실행이 계속됩니다.
allow_user_poisoning true 이 경우 true수동 AddressSanitizer 중독 인터페이스를 사용하여 메모리 영역을 포이즌 또는 포이즌으로 수동으로 표시할 수 있습니다.
check_initialization_order false 이면 true초기화 순서 문제를 catch하려고 시도합니다.
continue_on_error 0 메모리 안전 오류를 보고하는 동안 애플리케이션이 계속 실행되도록 허용합니다.
0-disabled.
1 사용; 에 오류가 전송 stdout됩니다.
2-enabled; 에 오류가 전송 stderr됩니다.
자세한 내용은 continue_on_error 참조하세요.
detect_container_overflow true 이면 true컨테이너 오버플로 주석을 적용합니다. 자세한 내용은 ContainerOverflow를 참조하세요.
detect_invalid_pointer_pairs false ASan이 다른 개체에 속하는 포인터와 같은 true잘못된 포인터 쌍에서 , <<=>, 및 >= 같은 작업을 검색하는 경우 -
detect_stack_use_after_return false 실험적인. 이 경우 trueASan은 stack-use-after-return 런타임에 검사를 사용하도록 설정합니다. 이 필요합니다./fsanitize-address-use-after-return 자세한 내용은 stack-use-after-return을 참조하세요.
exitcode 1 ASan에서 오류를 발견하면 프로그램 종료 상태를 이 값으로 재정의합니다.
external_symbolizer_path "" 외부 기호 변환기 경로입니다. 비어 있는 경우 ASan은 기호 변환기를 검색 $PATH 합니다.
fast_unwind_on_malloc true 사용 가능한 경우 ASan은 빠른 프레임 포인터 기반 해제 malloc/free를 사용합니다.
halt_on_error true 지원되지 않습니다. continue_on_error를 대신 사용하세요.
handle_segv true 이 경우 trueASan은 오류를 처리합니다 SEGV .
handle_sigfpe true 이 경우 trueASan은 오류를 처리합니다 SIGFPE .
handle_sigill true 이 경우 trueASan은 오류를 처리합니다 SIGILL .
help false 이 경우 trueASan은 플래그 옵션을 콘솔에 출력합니다.
iat_overwrite error error - 덮어쓰기가 검색될 때마다 오류를 보고합니다.
protect - 덮어쓴 정의를 사용하지 않도록 시도합니다.
ignore - 덮어쓴 함수를 수정하지 않습니다. 자세한 내용은 iat_overwrite를 참조하세요.
include_if_exists "" 지정된 파일에서 옵션을 읽습니다. 파일이 없으면 ASan이 실패하지 않습니다.
intercept_strpbrk true 이면 true사용자 지정 래퍼를 strpbrk 사용하여 더 많은 오류를 찾습니다.
intercept_strspn true 이면 true사용자 지정 래퍼를 strspnstrcspn 사용하여 더 많은 오류를 찾습니다.
intercept_strstr true 이면 true사용자 지정 래퍼를 strstrstrcasestr 사용하여 더 많은 오류를 찾습니다.
malloc_context_size 1 각 할당/할당 취소에 대해 유지할 최대 스택 프레임 수입니다.
malloc_fill_byte 0xbe 새로 할당된 메모리를 채우는 데 사용되는 값입니다.
max_malloc_fill_size 4096 ASan 할당자는 호출malloc_fill_byte할 때 할당을 max_malloc_fill_size 최대로 malloc 채웁니다.
max_redzone 2048 힙 개체 주위의 redzone의 최대 크기(바이트)입니다.
new_delete_type_mismatch true 크기와 new . 사이의 불일치에 대한 오류를 보고합니다 delete. 자세한 내용은 new-delete-type-mismatch를 참조하세요.
poison_heap true 이면 true할당 및 할당 취소 시 힙 메모리를 포이즌합니다. false 는 할당자 또는 계측기를 벤치마킹하는 데 유용합니다.
poison_partial true If true, 포이즌 부분적으로 주소 지정 가능 8 바이트 정렬 된 단어입니다. 이 플래그는 힙 및 전역 버퍼에 영향을 주지만 스택 버퍼에는 영향을 미치지 않습니다.
print_cmdline false 충돌할 때 명령줄을 인쇄합니다. set continue_on_error= 1을 사용하면 > 현재 작업 디렉터리를 인쇄하고 인식합니다UTF-16.
print_legend true 이 경우 trueASan 보고서와 함께 섀도 메모리 맵 범례를 인쇄합니다.
print_stats false 이 경우 trueASan 보고서를 인쇄한 후 할당자 통계를 인쇄합니다.
print_summary true 이면 false오류 보고서와 함께 표시되는 오류 요약을 표시하지 않습니다.
quarantine_size_mb -1 오류를 검색 use-after-free 하는 데 사용되는 격리 크기(Mb)입니다. 값이 낮을수록 거짓 부정의 가능성이 높아질 수 있습니다.
redzone 16 힙 개체 주위의 레드존 최소 크기(바이트)입니다. 요구 사항: redzone >= 16 2의 힘이어야 합니다.
replace_str true 이면 true문자열 함수에 대한 libc 사용자 지정 래퍼 및 대체를 사용하여 더 많은 오류를 찾습니다.
report_globals 1 글로벌에 대한 버퍼 오버플로에 응답하는 방법:
0-전역에서 버퍼 오버플로를 검색하지 않습니다.
1 - 버퍼 오버플로를 검색합니다.
2 - 버퍼 오버플로를 검색하고 등록된 전역 데이터를 인쇄합니다.
sleep_before_dying 0 오류 보고서를 인쇄하고 프로그램을 종료하는 동안 절전 모드로 전환할 시간(초)입니다.
stack_trace_format DEFAULT 스택 프레임을 렌더링하는 데 사용되는 형식 문자열입니다. DEFAULT - #%n %p %F %L. 사용 가능한 자리 표시자 목록:
%%- 문자를 나타냅니다.'%'
%n- 프레임 번호(복사본)frame_no
%p - PC
%m - 모듈 경로
%o - 모듈의 오프셋
%f - 함수 이름
%q - 사용 가능한 경우 함수의 오프셋
%s - 원본 파일의 경로
%l - 원본 파일의 줄
%c - 원본 파일의 열
%F - 함수가 알려진 경우 소스가 알 수 없는 경우 ASan이 이 함수의 오프셋을 출력합니다 in <func name> .
%S - ASan이 파일/줄/열 정보를 인쇄합니다.
%L - 파일 정보를 사용할 수 있는 경우 ASan은 파일 이름, 줄 및 열을 출력합니다. 모듈 정보를 사용할 수 있는 경우 ASan은 모듈 이름, 오프셋 및 아키텍처를 출력합니다. 둘 다 사용할 수 없으면 ASan이 인쇄됩니다. (<unknown module>)
%M - 알려진 경우 ASan은 모듈 기본 이름 및 오프셋을 인쇄하거나 PC
strict_memcmp true Iftrue는 비교하기 전에 항상 바이트를 읽 memcmp(p1, p2, n) 는다고 n 가정하고 p1p2 .
strict_string_checks false 이면 true문자열 인수가 null로 올바르게 종료되는지 확인합니다.
strip_path_prefix "" 오류 보고서의 파일 경로에서 이 접두사를 제거합니다.
symbolize true 이 경우 true가상 주소를 파일 또는 줄 위치로 변환하는 데 사용합니다 llvm-symbolizer .
symbolize_inline_frames true 인라인 프레임을 스택 추적으로 인쇄합니다.
verbosity 0 세부 정보 표시 수준:
0 - 기본 세부 정보 표시입니다.
1 - 더 많은 출력.
2 - 더 많은 출력.
3 - 최대 세부 정보 표시
windows_fast_fail_on_error false 이 경우 true오류 보고서를 인쇄한 __fastfail(71) 후 프로세스를 종료할 수 있습니다. 자세한 내용은 windows_fast_fail_on_error를 참조하세요.
windows_hook_legacy_allocators true 이면 true(Global/Local)(Alloc/Free/Size/ReAlloc/Lock/Unlock) 함수의 후킹을 사용하도록 설정합니다.

참고하십시오

AddressSanitizer 개요
AddressSanitizer 알려진 문제
AddressSanitizer 빌드 및 언어 참조
AddressSanitizer 섀도 바이트
AddressSanitizer 클라우드 또는 분산 테스트
AddressSanitizer 디버거 통합
AddressSanitizer 오류 예제