본문 바로가기

C++

fsanitize 컴파일 옵션

[1. 개요]

c++ 애플리케이션의 다양한 오류를 런타임에 찾고 수정하기 위한 한가지 방법이다.

컴파일 시 해당 옵션을 지정하면, 컴파일러가 프로그램에 검사 코드를 자동 삽입하여 오류를 찾는데 도움을 준다.

 

다양한 옵션을 살펴보면 아래와 같다.

-fsanitize=address 버퍼 오버플로우, use-after-free 등 메모리 오류 탐지
-fsanitize=undefined 정의되지 않은 동작 (나눗셈 0, 정수 오버플로우 등)
-fsanitize=leak 메모리 누수 추적
-fsanitize=memory 초기화되지 않은 메모리 사용 (GCC 지원 안함.?)
-fsanitize=thread race condition 탐지
-fsanitize=pointer-compare 잘못된 포인터 비교/연산 감지
-fsanitize=pointer-subtract 잘못된 포인터 연산 감지
-fsanitize=bounds 정적 배열 범위 초과 접근 감지

 

해당 옵션은 디버깅 심볼이 있어야 더 효율적 이다.

 

또한, -fomit-frame-pointer 와 같이 사용 시 더 좋음

  • 컴파일러는 최적화를 위해 frame pointer 를 유지하지 않는데
  • 이 옵션은, frame pointer 를 유지하도록 해줌.

 

 

valgrind 도 비슷한 역할을 함.

 

'C++' 카테고리의 다른 글

segmentation fault 사례 6  (0) 2025.08.22
buffer overflow 사례1  (0) 2025.06.26
Segmentation fault 사례5  (0) 2025.06.24
Placement new  (0) 2025.05.28
wchar_t 사용에 관하여 [2]  (0) 2025.05.13