본문 바로가기

Linux

[Linux] valgrind 메모리 릭 체크

valgrind 메모리 릭 체크

test.c

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char *str = (char*) malloc(1024);
    printf("flsdkjfslkjfsdklfj\n\n\n");
    printf("\n\n");
    return 0;
}


컴파일( -g 옵션을 넣어야 파일과 라인을 알수 있다. 그리고 -o옵션보다 먼저 써줘야 한다.)

gcc -g -o test test.c


valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test


하면

==17708==
==17708== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 11 from 1)
==17708== malloc/free: in use at exit: 1,024 bytes in 1 blocks.
==17708== malloc/free: 1 allocs, 0 frees, 1,024 bytes allocated.
==17708== For counts of detected errors, rerun with: -v
==17708== searching for pointers to 1 not-freed blocks.
==17708== checked 59,020 bytes.
==17708==
==17708== 1,024 bytes in 1 blocks are definitely lost in loss record 1 of 1
==17708==    at 0x4021620: malloc (vg_replace_malloc.c:149)
==17708==    by 0x80483D0: main (test.c:6)
==17708==
==17708== LEAK SUMMARY:
==17708==    definitely lost: 1,024 bytes in 1 blocks.
==17708==      possibly lost: 0 bytes in 0 blocks.
==17708==    still reachable: 0 bytes in 0 blocks.
==17708==         suppressed: 0 bytes in 0 blocks.


이렇게 출력된다.


출력내용중(빨간색부분) test.c:6 를 보면 파일명과 라인을 알 수 있고

definitely lost: 1,024 bytes in 1 blocks. 를 보면 1의 블럭에서 1024  byte를 잃었다는 것을 알 수 있다.


valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --log-file="./valgrind_log" ./test


를 하면 로그 파일로 볼수 있다.



Home : http://valgrind.org/ 

사용법 : http://valgrind.org/docs/manual/manual.html 

파일로 다운로드 : http://valgrind.org/docs/download_docs.html 

[출처] valgrind 메모리 릭 체크 - valgrind 아주 유용하다. 메뉴얼도 언젠가 꼭 봐보자..(영어 ㄷㄷㄷ;;)|작성자 kdepirate

1. Valgrind 설치

wget http://www.valgrind.org/downloads/valgrind-3.3.0.tar.bz2
tar xvfj valgrind-3.3.0.tar.bz2
cd valgrind-3.3.0
./configure
make
make install


2. Valgrind 테스트
valgrind --leak-check=yes main

3. 간단 실행법
valgrind --tool=memcheck --leak-check=full [프로그램] [실행인자들...]

'Linux' 카테고리의 다른 글

[Ubuntu]Samba 사용법  (0) 2008.07.18
[Linux]명령 (Command)  (0) 2008.07.15
[Linux]Poll 구현 분석  (0) 2008.07.14
[Linux]리눅스 관리자가 알아두어야 할 50가지  (0) 2008.07.14
[Linux] iptables  (0) 2008.07.14