반응형
리눅스에서 프로그램을 만들다 보면 Memory Leak 체크를 할 필요성을 느낍니다.
이럴경우, Memory Leak을 찾는 툴이 valgrind입니다.
프로그램은 사이트(http://valgrind.org/)에서 받을 수 있구요~ ^^
다운받은 파일을 압축을 풀고 그 폴더에 들어간 뒤, valgrind파일을 실행시킵니다.
제가 가장 편하게 사용하는 메모리릭 체크 방법은 다음과 같습니다.
--leak-check=full : 메모릭에러가 날 경우 소스파일명과 라인위치 출력
이 옵션을 사용할려면 디버깅컴파일을 해야합니다. (컴파일시 -g 옵션)
--log-file : 체크결과를 저장할 로그파일명
이렇게 실행하고 나면 로그파일이 만들어지는데 이 두 부분만 보면 됩니다.
LEAK SUMMARY ( Memory Leak 요약 )
1블록에서 1,025만큼의 메모리 Leak이 발생했다는 걸 알 수 있습니다.
definitely lost외에 항목은 불분명한 것이므로 굳이 볼 필요는 없습니다.
LEAK DETAIL
definitely lost로 로그파일을 검색하게 되면 상세내용을 찾을 수 있습니다.
메모리 릭 찾기 참 쉽죠잉?
이럴경우, Memory Leak을 찾는 툴이 valgrind입니다.
프로그램은 사이트(http://valgrind.org/)에서 받을 수 있구요~ ^^
다운받은 파일을 압축을 풀고 그 폴더에 들어간 뒤, valgrind파일을 실행시킵니다.
제가 가장 편하게 사용하는 메모리릭 체크 방법은 다음과 같습니다.
valgrind --leak-check=full --log-file=memcheck.txt -v --error-limit=no [프로그램경로] [인자] |
이 옵션을 사용할려면 디버깅컴파일을 해야합니다. (컴파일시 -g 옵션)
--log-file : 체크결과를 저장할 로그파일명
이렇게 실행하고 나면 로그파일이 만들어지는데 이 두 부분만 보면 됩니다.
LEAK SUMMARY ( Memory Leak 요약 )
==18431== LEAK SUMMARY: ==18431== definitely lost: 1,025 bytes in 1 blocks ==18431== indirectly lost: 0 bytes in 0 blocks ==18431== possibly lost: 12,749,264 bytes in 112 blocks ==18431== still reachable: 4,240 bytes in 16 blocks ==18431== suppressed: 0 bytes in 0 blocks ==18431== Reachable blocks (those to which a pointer was found) are not shown. ==18431== To see them, rerun with: --leak-check=full --show-reachable=yes |
definitely lost외에 항목은 불분명한 것이므로 굳이 볼 필요는 없습니다.
LEAK DETAIL
definitely lost로 로그파일을 검색하게 되면 상세내용을 찾을 수 있습니다.
==18431== Thread 1: ==18431== 1,025 bytes in 1 blocks are definitely lost in loss record 2 of 9 ==18431== at 0x4C2179E: malloc (vg_replace_malloc.c:236) ==18431== by 0x40A16F: make_friend_best(char*, int, int) (friend_srch.c:798) ==18431== by 0x406A45: Friend(int, int, int, int, int, int, int, char*, char*, char*, char*, char*, int, char*, char*) (friend_thread.c:600) ==18431== by 0x4052C6: main (friend_srch_main.c:75) |
이 로그를 보게되면, 동적할당 하는 부분에서 릭이 발생했고
friend_srch.c소스에 798라인이 그 부분이라는 걸 알 수 있습니다.
friend_srch.c소스에 798라인이 그 부분이라는 걸 알 수 있습니다.
메모리 릭 찾기 참 쉽죠잉?
반응형
'Linux > 공통' 카테고리의 다른 글
nohup 사용시, nohup.out 파일 생성 안되게 하기 (0) | 2013.06.26 |
---|---|
SVN 폴더 및 프로젝트 생성방법 (0) | 2012.09.27 |
Linux 에러 코드 확인 방법 (0) | 2011.10.28 |
subversion (SVN) 백업 및 복구 방법 (0) | 2011.10.27 |
vi 스왑파일 복구 방법 (E325 에러) (0) | 2011.10.25 |