본문 바로가기
IT

C/C++ 프로그래밍 오류 검출 툴 - valgrind 메모리 오류 상세히 보기

by geddy 2024. 1. 25.

이 글에서는 valgrind로 메모리 오류를 더 상세히 알아보는 법에 대해서 설명합니다. 

C/C++ 프로그래밍 오류 검출 툴 - valgrind 메모리 오류 상세히 보기 썸네일

valgrind 메모리 오류 상세히 보기


Valgrind의 memcheck 도구는 기본적으로 대부분의 메모리 오류를 자동으로 감지합니다. 그러나 일부 상황에선 접근 오류를 감지하지 못할 수도 있습니다. 이러한 경우에는 다음과 같은 옵션 중 하나 이상을 사용하여 검사 정확도를 높일 수 있습니다:

 

--track-origins=yes:

이 옵션은 메모리 오류의 원인을 추적하도록 지시합니다. 메모리를 초기화하지 않고 읽기를 시도한 경우 원인을 추적할 수 있습니다. 기본적으로 이 기능은 비활성화되어 있습니다.

 

$ valgrind --tool=memcheck --track-origins=yes your_program

 

 

--keep-stacktraces=alloc-and-free:

이 옵션은 할당과 해제 모두에 대한 스택 추적을 유지하도록 지시합니다. 이렇게 하면 free된 메모리에 대한 접근도 추적이 가능할 수 있습니다.

 

$ valgrind --tool=memcheck --keep-stacktraces=alloc-and-free your_program

--freelist-vol=VALUE: 

이 옵션은 해제된 메모리 블록 목록의 최대 크기를 제어합니다. 이 값을 높게 설정하면 해제된 메모리 블록을 더 오래 유지하므로 오류 감지 가능성을 높일 수 있습니다. 기본값은 20,000,000입니다.

$ valgrind --tool=memcheck --freelist-vol=100000000 your_program

 

facebook twitter kakaoTalk kakaostory naver band shareLink