본문 바로가기

Software/Debugging

Valgrind 사용예제

#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
valgrind --tool=memcheck --leak-check=yes --show-reachable=yes --log-file="./valgrind_log" ./test

아래와 같이 메로리 Leak을 확인할수 있다. 
==3402== HEAP SUMMARY:
==3402==     in use at exit: 1,024 bytes in 1 blocks
==3402==   total heap usage: 1 allocs, 0 frees, 1,024 bytes allocated
==3402== 
==3402== 1,024 bytes in 1 blocks are definitely lost in loss record 1 of 1
==3402==    at 0x4C274A8: malloc (vg_replace_malloc.c:236)
==3402==    by 0x400575: main (test.c:5)
==3402== 
==3402== LEAK SUMMARY:
==3402==    definitely lost: 1,024 bytes in 1 blocks
==3402==    indirectly lost: 0 bytes in 0 blocks
==3402==      possibly lost: 0 bytes in 0 blocks
==3402==    still reachable: 0 bytes in 0 blocks
==3402==         suppressed: 0 bytes in 0 blocks


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
또는 sudo apt-get install valgrind
2. Valgrind 테스트
valgrind --leak-check=yes main 

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

' Software > Debugging' 카테고리의 다른 글

GDB 설정하기  (0) 2016.07.18