문제

그래서 우리 회사는 Rational Purify(Microsoft Visual Developer Studio의 플러그인)라는 버그가 많은 프로그램을 사용하여 메모리 누수를 관리합니다.이 프로그램은 메모리 누수를 발견한 후 이를 클릭한 다음 누수가 발생한 줄로 점프할 수 있도록 설계되었습니다.

불행하게도 Purify는 제대로 작동하지 않으며 Purify는 누수가 발생한 곳으로 이동하지 않고 누수가 발생한 클래스와 메서드만 언급합니다.불행하게도 때로는 이것은 곰 사냥을 돕기 위해 가이드를 고용하고 가이드가 숲을 가리키며 거기에 곰이 있다고 알려주는 것만큼이나 유용합니다.

Purify 경험이 있는 사람 중에 이 문제를 어떻게 해결할 수 있는지 아는 사람이 있거나 보기 좋은 매뉴얼이 있는 사람이 있나요?

도움이 되었습니까?

해결책

일반적으로 두 가지 옵션이 있습니다. 하나는 Purify의 계측에서 모듈 DLL을 제외하는 것입니다. 이는 때때로 도움이 됩니다.두 번째는 BoundsChecker를 얻는 것입니다. 이는 컴파일 시간 계측을 훨씬 느리게 하지만 세부 수준은 훨씬 더 좋습니다.

우리는 일반적으로 버그/충돌이 존재한다는 것을 알고 있을 때 체크인, 온전성 검사 및 BoundsChecker에 Purify를 사용합니다.

BoundsChecker에는 악기 파일 A.cpp 및 B.cpp만 있고 나머지는 모두 제외된 것과 같은 몇 가지 멋진 기능이 있습니다.

이 두 응용 프로그램은 모두 64비트 운영 체제에서 작동하지 않으며 BoundsChecker는 64비트 OS에 설치되지 않습니다.32비트 백 포트를 사용하여 기본 64비트 개발로 전환하는 경우 가장 실망스럽습니다!

다른 팁

Purify는 스위스 칼과 같습니다.그것을 사용하는 방법을 안다면 최고는 아니지만 여전히 결과를 얻을 수 있습니다.그렇지 않으면 Windows에서 실행되는 또 다른 프로그램이기 때문에 충돌이 발생합니다.

결국에는 많은 인내와 재구축, 그리고 약간의 행운이 필요할 것입니다.

Purify에는 ScanVSSolutionForPurifyPlus.pl이라는 스크립트가 포함되어 있어 프로젝트 파일에 Purify가 제대로 작동할 수 있도록 모든 올바른 설정이 있는지 확인합니다.아직 실행하지 않았다면 한번 시도해 보세요.

(저는 개인적으로 대규모 솔루션에서 ScanVSSolutionForPurifyPlus.pl을 사용해 보았는데 정말 매력적이었습니다.한 가지 주의사항:당신이 그것에 당신의 이름을 줄 때 .sln 파일의 경우 전체 경로 이름을 제공해야 할 수도 있습니다.)

디버그 빌드가 있습니까?아니면 모든 PDB를 활성화했습니까?실행 파일에서 WindDbg를 시도하고 !lmi 명령으로 무엇이 보이는지 확인하세요.

전체 코드가 올바르게 계측되었나요?

또한 다음과 같은 다른 것을 사용해보십시오. 무료 시각적 누출 감지기 또는 Microsoft 도구 LeakDiag.

저는 약 5년 전에 Purify를 사용했습니다.그때는 정말 엉성했어요.그들은 '다음 릴리스'에서 모든 버그를 수정하겠다고 계속 약속했습니다.우리는 결국 그것을 포기했습니다.그들이 제품에 자체 QA 도구를 사용했는지 궁금할 뿐입니다.아 아이러니하다...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top