Valgrind에서 Linux 전용임을 발견했을 때 C 코딩 / 디버깅을 개선하는 데 도움을 요청했습니다. OS를 Linux로 옮기는 데 다른 필요 나 관심이 없으므로 Windows 용으로도 좋은 프로그램이 있는지 궁금합니다.
Valgrind에서 Linux 전용임을 발견했을 때 C 코딩 / 디버깅을 개선하는 데 도움을 요청했습니다. OS를 Linux로 옮기는 데 다른 필요 나 관심이 없으므로 Windows 용으로도 좋은 프로그램이 있는지 궁금합니다.
답변:
jakobengblom2가 지적했듯이 valgrind에는 도구가 있습니다. 당신이 말하는 것에 따라 다른 창 카운터 부분이 있습니다. 여기서는 OSS 또는 무료 도구에 대해서만 언급 할 것입니다.
1. MemCheck :
닥터 메모리. 이 도구는 비교적 새로운 도구이며 Windows 7에서 매우 잘 작동합니다. 가장 좋아하는 기능은 보고서에서 동일한 누수 할당 스택을 그룹화한다는 것입니다.
http://code.google.com/p/drmemory/
또한 UMDH ( http://support.microsoft.com/kb/268343 )를 사용 했으며 조용하고 설치하기 쉬운 것이 었습니다. Win2000에서 Win7까지 작동합니다.
AppVerifier는 Windows 기본 코드 개발자를위한 스위스 나이프가 있어야합니다. "메모리"검사기는 유사한 작업을 수행합니다. http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind :
내가 가장 좋아하는 것은 매우 졸리다 ( http://www.codersnotes.com/sleepy ) 작지만 매우 유용하고 사용하기 쉽다.
더 많은 기능이 필요한 경우 AMD CodeAnalyst ™ 성능 분석기는 무료입니다 : http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx
Windows 성능 분석 도구는 Microsoft에서 제공하지 않으므로 사용하기 쉽지는 않지만 시간을 할애하여 작업을 수행 할 수 있습니다. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx 다운로드 : http://msdn.microsoft.com/en-us/performance / cc752957
3. 대산 괴 :
Windows의 비슷한 (정확하지 않은) 무료 도구는 다음과 같습니다.
sysinternals의 VMMap : http://technet.microsoft.com/en-us/sysinternals/dd535533
windbg의! heap 명령 : http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4. Cachegrind :
위에서 언급 한 Windows 성능 도구에는 일정 수준의 L2 캐시 미스 프로파일 링 기능이 있지만 Cachegrind만큼 사용하기 쉽지는 않습니다.
5. DRD :
Windows에서 무료로 강력한 것을 찾지 못했지만 Windows에서 유일하게 사용할 수있는 유일한 무료 도구는 AppVerifier의 "잠금"검사기입니다. http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
Valgrind + Wine을 사용하여 Windows 앱을 디버깅하지 않겠습니까? http://wiki.winehq.org/Wine_and_Valgrind를 참조 하십시오
(Chromium은이를 사용하여 Windows 버전의 메모리 오류를 확인합니다. build.chromium.org를 참조하여 실험 또는 메모리 워터 폴을보고 와인을 검색하십시오.)
Dr. Memory도 있습니다. dynamorio.org/drmemory.html 참조
Visual C ++의 경우 Visual Leak Detector를 사용해보십시오 . 그것을 사용할 때 new
호출 에서 메모리 누수가 감지되어 누수의 소스 코드에서 실제 줄을 반환했습니다. 최신 릴리스는 http://vld.codeplex.com/ 에서 찾을 수 있습니다 .
사용중인 Windows 용 개발 환경에는 자체 도구가 포함되어있을 수 있습니다. 예를 들어 Visual Studio를 사용하면 프로그램에서 메모리 누수 를 감지하고 격리 할 수 있습니다.
Windows 용 디버깅 도구에는 Pageheap.exe 부분이 있습니다. 무료이며 기본적으로 커스텀 메모리 할당 자 / 할당 자입니다.
gflags
+ gdb
(mingw에서)를 발견했습니다 .
Visual Studio와 함께 일반적으로 Visual Leak Detector 또는 win32 api 호출 인 _CrtDumpMemoryLeaks ()를 사용합니다. 둘 다 멋진 것은 아니지만 작업을 완료합니다.
과거에 Compuware DevPartner Studio 를 사용할 기회 가 있었는데 정말 좋았지 만 비용이 많이 듭니다. 더 저렴한 솔루션은 GlowCode 일 수 있으며 방금 5.x 버전으로 작업했으며 디버깅 해야하는 프로세스에 연결하는 데 문제가 있음에도 불구하고 꽤 잘 작동했습니다.
Software Verification이라는 회사의 Memory Validator를 좋아했습니다 .
Viusual Studio는 메모리 누출 자체를 감지하는 데 도움을 줄 수 있습니다. 페이지 의 Microsoft Visual C ++ 팁과 트릭 -> "메모리 누수"섹션을 참조하십시오. 이 게시물을 참조하십시오 SO
실제 추적은 Visual Studio의 Team Edtion에서만 가능합니다.
" 소스 테스트 도구를 참조하십시오유사한 도구 목록은 Software QA Testing and Test Tool Resources 페이지 "링크를 참조하십시오.
과거에는 BoundsChecker, DevPartner Studio 및 Intel V-Tune을 프로파일 링에 사용했습니다. 나는 V-Tune이 가장 좋았습니다. 다양한 인텔 칩셋을 에뮬레이션 할 수 있으며 해당 플랫폼에 대한 최적화 방법에 대한 힌트를 제공합니다.
않습니다 요헨 Kalmbach의 메모리 누수 탐지기는 자격?
추신 : 최신 버전의 URL은 기사의 댓글 스레드 어딘가에 묻혀 있습니다.
LeakDiag, UMDH, App Verifier, DebugDiag는 모두 코드의 견고성을 개선하고 메모리 누수를 찾는 데 유용한 도구입니다.
방법에 대한 퓨리 ?
메모리 및 스레딩 문제를 모두 감지하는 데 도움이되는 Intel Inspector XE 제품을 사용해보십시오. http://software.intel.com/en-us/articles/intel-inspector-xe/
아마도 CodeSnitch는 당신이 좋아하는 것일까 요? http://www.entrek.com/codesnitch.html
거의 모든 프로파일 러에는 메모리 누수 검사가 포함되며 메모리 할당시 스택이 표시됩니다.
Intels Parallel Inspector를 추천 할 수 있습니다 . 사용이 간편하고 재 컴파일이 필요하지 않습니다. 평가판은 30 일 동안 실행됩니다.
GlowCode 및 AtromatedQA 에는 이러한 기능이 포함됩니다. 그들은 모두 무료 평가판을 제공합니다.
Contrast의 Compuware DevPartner (일명 BoundsChecker)는 "악기"재 컴파일 속도를 늦춰야하며 오류를 확인할 때 응용 프로그램도 느리게 실행됩니다. 그리고 BoundsChecker는 64 비트 버전에서는 전혀 작동하지 않습니다. 우리는 그 도구를 포기했습니다.
내가 사용한 최고의 도구는 DevPartner BoundsChecker 입니다. 무료는 아니지만 평가 기간이 있습니다.
목록에 대한 다른 메모리 도구 : Memory Validator .
무료는 아니지만 Purify 나 Boundschecker만큼 비싼 곳은 없습니다.
GCC 및 Micrsoft Visual C (C ++ 아님)를 처리하고 베타 테스터를 찾고있는 Windows 용 메모리 안전 검사 도구 를 완성했습니다 .
2011 년 6 월 12 일 수정 : 더 이상 베타 버전이 아니며 이제 GCC 및 Microsoft Visual Studio C 용으로 제작되었습니다.
오늘이 SF 프로젝트를 찾았습니다.
http://sourceforge.net/p/valgrind4win/wiki/Home/
그들은 valgrind를 Windows로 포팅하고 있습니다. 아마도 몇 년 안에 우리는 창문에 신뢰할 수있는 발판을 가질 것입니다.
이 질문을 확인하십시오. Windows를위한 좋은 Valgrind 대체품이 있습니까? . valgrind에 대한 일반적인 대체 방법이 요구되지만, 경쟁 조건 탐지가 아닌 메모리 누수 탐지기를 주로 다루고 있습니다.
메모리 누수와 관련하여 Mozilla 가 수행하는 작업 을 읽으려고 할 수 있습니다 . 도구 상자에있는 도구 중 하나는 메모리 누출 감지기 로 사용 된 Hans Boehm 가비지 수집기 입니다.
IBM Purify 평가판 에 RuntimeChecker 평가판을 사용해 볼 수 있습니다 .
무료 솔루션은 Visual Studio에서 다음 코드를 사용하는 것입니다.
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
모든 cpp 파일의 맨 위에 이것을 작성하십시오. 디버그 실행을 중지하면 응용 프로그램의 메모리 누수를 감지하고 출력 창에 나열합니다. 메모리 누수 라인을 더블 클릭하면 메모리가 할당되고 해제되지 않은 라인이 강조 표시됩니다. 도움이 될 수 있습니다 : http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml