[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 |