메모리 체킹 툴 Valgrind

오늘 반나절 가까이 회의를 하면서 이래저래 본격적인 개발에 관한 이야기들이 오갔다.
그중에서도 오늘의 수확은 Valgrind라는 툴을 발견한 것이다.

같이 일하시는 과장님이 말씀하신건데 저녁먹고 바로 설치해보고 체킹까지 해봤다.

와~~~ 근데 이거 진짜 물건이다.

이 툴은 런타임에 실시간으로 메모리 체크를 해주는 유틸이다.
가장 중요한 기능을 바로 malloc으로 잡아준 메모리를 정확하게 free해주기 위함이다.

Valgrind가 지원하는 플렛폼은 아래와 같다.

x86/Linux: support is mature and almost complete.
AMD64/Linux: support is new but fairly complete.
PPC32/Linux: support is new, incomplete, but improving.

윈도우 운영체제에 관한건 너무 방대하고 다른점들이 많아서 아예 다른 프로젝트로 떼어 놓아야 할 정도라고 한다. 그리고 오픈소스운영체제가 아닌것들은 이런 툴을 만들기가 굉장히 힘들다고 하니 윈도용으로는 기대를 안하는게 나을거 같다. ^^;

현재 만들고 있는 테스트 모듈에 한번 돌려봤다.

사실 모듈 테스트라서 Init함수와 실제 기능하는 함수만 사용해보고 나머지 Destroy함수들은 사용을 안해서 굉장한 메모리 릭이 발생하고 있었다.

실제 내일 Destroy 계열의 함수를 사용해서 정확히 free가 되는지 확인만 해보면 될거 같다.

아래는 돌려본 결과물…

indirect하고 definitely가 요주의 부분
0 0 votes
Article Rating
Subscribe
Notify of
guest

3 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
bilbo

valgrind가 강력하긴 한데 멀티쓰레드 런타임 디버깅 상황에선 조금 느려요… 역시 퓨리파이만한게 없다는…

김정은

kldp.org/node/68481 이것도 한번 살펴보시지요

malloc 훅 인데 실제도 malloc 한 만큼 free 를 하는지 알아 볼수 있습니다.

고감자

와~~ 이런 기능도 있군요.

훅을 이용해 로그를 만든 다음에 실행된 malloc 과 free의 크기 및 위치를 로그로 기록하면 좋겠네요..

와우~ 잼난거 알려주셔서 감사합니다.