valgrind 를 이용한 메모리 릭, thread 체크

KiJeong·2021년 12월 7일
1

Test

목록 보기
3/4
post-custom-banner

Valgrind는 C/C++ 코드에서 사용 할 수 있다.

Valgrind 설치

sudo apt install valgrind  # Ubuntu, Debian, etc.
sudo yum install valgrind  # RHEL, CentOS, Fedora, etc.

Valgrind 실행

Debug 모드로 빌드된 바이너리를 돌려야 line number 정보가 나온다.

1. 메모리 릭 검증

Valgrind가 제공하는 memory checker인 "memcheck"를 이용한다.

valgrind --leak-check=full \
         --show-reachable=yes \
         --track-origins=yes \
         --verbose \
         --log-file=valgrind-out.txt \
         ./executable exampleParam1
  • -leak-check=full: "each individual leak will be shown in detail"
  • -track-origins=yes: 초기화되지 않은 value들을 추적해준다 (메모리 error에 유용). Valgrind가 너무 느리면 이 옵션은 끈다.
  • -verbose: verbosity 모드로, 프로그램에 대한 비정상적인 동작도 리포트해준다.
  • -log-file: 로그 파일을 작성한다. terminal 에서 유용하다.

2. 스레드 체크

Valgrind가 제공하는 thread checker인 "DRD"를 이용한다.

valgrind --tool=drd \
		 --verbose \
         ./executable exampleParam1

Valgrind Report

Valgrind를 돌린 결과는 다음과 같다.

HEAP SUMMARY:
    in use at exit: 0 bytes in 0 blocks
  total heap usage: 636 allocs, 636 frees, 25,393 bytes allocated

All heap blocks were freed -- no leaks are possible

ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

출처 https://stackoverflow.com/questions/5134891/how-do-i-use-valgrind-to-find-memory-leaks

post-custom-banner

0개의 댓글