2008년 9월 26일 금요일

cmake 사용시 add_test 로 추가한 테스트 케이스에 대해서 valgrind(윈도라면 purify) 등으로 메모리 릭 검사를 하는 방법


ctest 의 기능중에 valgrind 로 테스트해주는 기능이 들어있네.
간단히 테스트 해보고 적어둔다. 대시보드 기능은 아직 안땡기는데..
꼴을 보니 곧 써봐야할것 같다.

어쨌건.. CMakeLists.txt 예제(일부분만)..
# CTest 를 인클루드하는것 잊지말자
include(CTest)
enable_testing()
# MEMORYCHECK_COMMAND 로 valgrind path 지정.
# 그외 기억해둘만한 변수로는
# MEMORYCHECK_COMMAND_OPTIONS
# MEMORYCHECK_SUPPRESSIONS_FILE
# 정도가 있다.
# 그냥 valgrind 를 쓰는 경우라면 딱히 지정안해도 되더라.
set(MEMORYCHECK_COMMAND valgrind)

# enable_testing, add_test 콤보는 지금까지 계속 써오던것.
# 이렇게 추가된 테스트케이스들을 대상으로 멤체크를 하려면
# ctest -T memcheck 명령을 주면 된다.
add_test(test_simple_decoding test_simple_decoding)
add_test(test_simple_encoding test_simple_encoding)


뭐 별거 없다. 내 개발환경이야 보통 리눅스일테니 valgrind 세팅은 생략해도 되고.. 그럼 남는건 기존 내가 즐겨 쓰던 세팅에 include(CTest) 가 추가된다는것 하나뿐이다.

위 테스트에 대해서 메모리 체크를 시행할때는 커맨드라인에서 ctest -T memcheck 를 때려준다. 모든 케이스에 대해서 메모리 체크가 이루어지고 마지막에 leak 이 있었던 케이스가 몇개인지 알려준다.

예를들어 내가 두개의 테스트를 가지고 있는데 모두 릭이 있을경우 요런 결과가 나온다.


그리고 릭을 잡고 났더니 요런 결과가 나온다. 결과가 눈에 잘 안들어 오는군.

추가.
make 에  NightlyMemCheck 란 타겟이 생겼는데 이게 위와 동일한듯. CTest 를 include 해서 그런지 못보던 타겟이 많이 보이는군....





댓글 1개:

blogring.org :

trackback from: 테스트케이스-으로 이어질 블로그링
테스트케이스-에 관한블로그를 요약한 것입니다.