사람이 완전하지 않은 이상 수만줄 코딩하다 보면 실수 하기 마련입니다.
new 해놓고 delete 하지 않거나 new[]로 메모리 할당 했는데, delete로 메모리 해제 하거나..
메모리 누수 찾기는 정말 고된 작업이죠.

그래서 메모리 누수 찾는 유틸들도 많은데, 그 중 많이 쓰이는 것들 중 CRT, VLD 등이 있지만...
소개해드릴것은 Software VerificationMemory Validator 입니다. 이 곳에서 만든 제품중에는 Perfomance Validator 라는 프로파일러도 있는데, 이것도 꽤 성능이 좋으니 프로파일링 필요하신분은 한번 써보세요.

여튼 본론으로 들어와서...
어제 프로그래머팀 정기회의때 메모리 누수 관련 문제가 나왔습니다. 이전부터 있었던 고질적인 문제로 이참에 잡아버리자더군요. 그 1타 임무를 제가 맡았습니다. 이전 회사에서도 관련 작업을 했었던 경험이 있는 제가 하기로 한거죠.

그래서 이리저리 관련 정보를 먼저 수집했습니다. 만만한 VLD로 일단 돌려봤지만, 제대로 작동이 안되더군요. 라이브러리 충돌도 아니고, 별다른 오류도 안나고 빌드가 됐지만, 실행이 안되는...

그래서 2번째 타겟으로 위에서 소개한 Memory Validator를 사용했습니다. 오우~ 한번 돌리자마자 바로 메모리 누수되는 곳들을 쭉쭉~ 뽑아내더군요. 게다가 소스 코드 위치까지 바로바로 뿌려주는!!!



설정도 간편하고, 상용이긴하지만 30일 트라이얼 버전을 제공하기때문에, 일단 사용하는데는 큰 지장이 없습니다.
메모리 누수 탐지가 필요한 분들에게 적극 강추!!

그래도 고수 프로그래머라면 이런 일이 생기기전에 미리 할당/해제를 정확하게 코딩하는 습관을 들여야겠죠.
저도 반성해야겠습니다. ㅠㅠ

  1. BlogIcon 구차니 2010.01.20 09:48 신고

    오 매우 좋은 툴이군요 ㅋㅋ
    음.. 그런데 리눅스의 valgrind가 이런거 가능하다는데 윈도우 용도 있을려나요 ㅎ

    • BlogIcon 친절한티스 2010.01.25 09:48 신고

      정말 유용하더군요. 하지만 툴로도 안되는 곳이 있으니 결국에는 수작업이 들어가야 하더군요. ㅋㅋㅋ

+ Recent posts