2010-06-24 4 views
3

야간에 수락 테스트를받습니다. valgrind를 사용하여 수동으로 누수를 검사하는 추가 안전 가드로서 자동으로 코드에서 메모리 누수를 확인하고 싶습니다. 그러나 valgrind에서 프로세스를 실행하기 위해 스크립트를 업데이트하는 것은 쉽지 않지만 각 테스트는 여러 프로세스를 시작하고 중지하며 약 15000 개의 테스트 사례가 있으므로 수천 개의 개별 보고서가 작성됩니다.동일한 프로세스의 여러 실행에서 Valgrind memcheck 보고서를 병합하려면 어떻게합니까?

이러한 보고서를 병합 할 수있는 도구가 있습니까? 나는 valkyrie를 ​​보았지만 문서에 따르면 valgrind를 지원하지 않는다. 3.5

+0

같은 문제가 있습니다. 결론은 지금 : 스크립트 작성 :) 당신이 그런 도구를 찾으면 관심이 있어요 ... – neuro

답변

1

코드가 대부분 깨끗한 경우 오류 케이스 만 유지하면된다.

출력을 결합하는 도구를 사용하려는 경우 valgrind xml 출력 형식이 올바른 시작일 수 있습니다. 적어도 파싱은 너무 어렵지 않아야합니다. valgrind 로그를 다른 파일로 출력하여 프로그램의 출력과 분리 할 수도 있습니다. 또한 --error-exitcode=으로 메모리 누수를 감지하면 valgrind에서 오류를 발생시킬 수 있습니다.

누출을 비교할 때 동일한 메모리 누수가 무엇인지 결정해야합니다.

+0

주어진 수천 개의 보고서가있을 수 있지만 오류 사례를 찾는 것은 어려울 수 있습니다. 많은 오류가있을뿐만 아니라 거기에 누수가 적다는 것을 알고 있습니다. 모든 병합 도구가 하나의 마스터 보고서로 결합되기를 바라는 복제본이 많이있을 것입니다. – Glen

+0

따라서 "내 코드가 대체로 깨끗한 경우"내 문장. 비교할 때 추적의 중요성을 결정해야하므로 어떤 경우에도 병합이 까다로울 수 있습니다. –

0

문제를 해결하는 방법은 --gen-suppressions=all 옵션을 추가하고 귀하의 suppressions files에 무시 된 모든 오류를 연결하는 것입니다. 실제 누수와 거짓 누출을 수동으로 분류해야하지만, 완료되면 valgrind는 누수 만 인쇄합니다.

그런 다음 리포트에서 아무 것도 쓰지 않았다면 계속 진행하기 전에 메모리 누수를 해결해야 할 수도 있습니다.

--quiet 옵션이 필요합니다. 자동으로 실행되고 오류 메시지 만 인쇄하십시오. 회귀 테스트를 실행하거나 다른 자동화 된 테스트 기계를 사용하는 경우 유용합니다.

0

최신 버전의 Valkyrie (Valgrind의 GUI 동반자)가 원하는 기능을 제공합니다.

$ man valkyrie 
NAME 
    valkyrie - graphical front-end to the Valgrind suite of tools for debugging and profiling Linux executables 

SYNOPSIS 
    valkyrie [valkyrie-opts] [valgrind-opts] [prog-and-args] 

<snip> 
    --merge <loglist> 
      Merge multiple logfiles, discarding duplicate errors 

vk_logmerge이라는 CLI 전용 변형도 있습니다. Ubuntu를 사용하고 있다면 valkyrie 패키지로 제공됩니다.

관련 문제