Red Baron

POST : Program

memory leak prof - valgrind

출처:http://smiletw.myscan.org/wiki/moin.cgi/valgrind
$ valgrind --leak-resolution=high --trace-malloc=yes --leak-check=yes --show-reachable=yes -v [프로그램 풀 경로] 

실행이 끝난 다음에 malloc/free 된 메모리들에 대한 현황을 ERROR SUMMARY라는 이름으로 알려줍니다. leak된 것들이 있다면 어떤 종류이고 어떤 내용이 들어있는지 등등을 자세히 알려주니 그것을 보시면 디버깅이 손쉬울 겁니다. 혹 출력되는 메시지가 너무 많아 방해가 되면 --trace-malloc=yes 를 빼주셔도 이 경우에는 별 상관 없을겁니다. malloc/free 될때마다 뿌려주는 메시지를 출력안하는 것입니다.

만약 한번의 alloc에 대해 두번의 free가 가해졌다면 아래와 같은 메시지가 그 위치를 알려줍니다. 보시다시피 main.c의 52번째줄에서 이미 free한 메모리 블럭에 대해 main.c의 53번째줄에서 잘못된 free를 수행한 걸로 나옵니다.

 ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) 
==29279== 
==29279== 1 errors in context 1 of 1: 
==29279== Invalid free() / delete / delete[] 
==29279== at 0x40025E87: free (in /usr/lib/valgrind/vgskin_memcheck.so) 
==29279== by 0x80489C3: main (main.c:53) 
==29279== by 0x4024190A: __libc_start_main (in /lib/libc-2.3.2.so) 
==29279== by 0x80488E0: (within /home/youlsa/src/montgomery/actiontag) 
==29279== Address 0x4109C024 is 0 bytes inside a block of size 200 free'd 
==29279== at 0x40025E87: free (in /usr/lib/valgrind/vgskin_memcheck.so) 
==29279== by 0x80489B2: main (main.c:52) 
==29279== by 0x4024190A: __libc_start_main (in /lib/libc-2.3.2.so) 
==29279== by 0x80488E0: (within /home/youlsa/src/montgomery/actiontag) 
==29279== IN SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) 
top

posted at

2006. 12. 9. 14:38


CONTENTS

Red Baron
BLOG main image

RSS 2.0Tattertools
공지 아카이브
최근 글 최근 댓글 최근 트랙백
카테고리 태그 구름사이트 링크