2009-11-29 4 views
1

프로그래밍 방식으로 Valgrind memcheck를 callgrind로 할 수있는 방법을 설정/해제하는 방법이 있다고 생각하지 않습니까? (계측 시작/중지).Valgrind memcheck 프로그래밍 가능

천천히 (테스트하려는 코드가 자동으로 시작되어 실행중인 상태라면 괜찮습니다.)하지만 앱에서 몇 개의 버튼을 클릭하지 않고도 중요한 코드에 실제로 들어갈 수는 없습니다. 이는 완전히 응답하지 않습니다. (내 코드는 다른 앱의 플러그인 임)

감사합니다.

답변

3

원칙적으로 거의 불가능합니다. valgrind가 전체 메모리의 전체 기록을 모르는 경우 어떻게 누수인지 유효하지 않은 메모리를 참조하는지 알 수 있습니까?

2

계측을 중지/시작할 수는 없지만 프로그래밍 방식으로 누출 검사를 수행 할 수 있습니다. http://valgrind.org/docs/manual/mc-manual.html#mc-manual.clientreqs을 참조하십시오. 특히 VALGRIND_DO_LEAK_CHECK, VALGRIND_DO_ADDED_LEAK_CHECK 및 VALGRIND_DO_CHANGED_LEAK_CHECK를 참조하십시오.

+0

또한 'VALGRIND_DISABLE_ERROR_REPORTING' 및'VALGRIND_ENABLE_ERROR_REPORTING' 클라이언트 요청은 알고있는 것을 필터링하는 데 유용합니다. 흥미로운 일은 아닙니다. 장시간 실행중인 앱에서 느린 누출에 관심이있는 경우 시작하고,보고 기능을 사용 중지하고, 최초 누출 검사를 수행하고,보고 기능을 다시 활성화하고, 점진적 누출 검사를 수행하여보고 된 내용을 볼 수 있습니다. 'reachable' 확인을하고 있다면 특히 유용합니다. –