Windows를위한 좋은 Valgrind 대체품이 있습니까?
나는 리눅스에서만 C 코딩 / 디버깅을 개선 할 수 있도록 Valgrind를 조사하고있었습니다. 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를 사용하면 프로그램에서 메모리 누수 를 감지하고 격리 할 수 있습니다.
나는 몇 가지 도구를 나열하고 싶습니다, 희망은 유용 할 것입니다
- 정화
- 바운드 검사기
- 커버리지 (기본적으로 코드 분석기이지만 정적 메모리 누수를 잡을 것입니다)
- 글로우 코드
- 달록
- ccmalloc
- NJAMD
- YAMD
- 발 그린 드
- mpatrol
- 보험 +
There is Pageheap.exe part of the debugging tools for Windows. It's free and is basically a custom memory allocator/deallocator.
See http://support.microsoft.com/kb/286470
In combination with Visual Studio I generally use Visual Leak Detector or simply _CrtDumpMemoryLeaks() which is a win32 api call. Both are nothing fancy but they get the job done.
I had the chance to use Compuware DevPartner Studio in the past and that was really good, but it's quite expensive. A cheaper solution could be GlowCode, i just worked with a 5.x version and, despite some problems in attaching to a process i needed to debug, it worked quite well.
I've been loving Memory Validator, from a company called Software Verification.
Viusual Studio can help detecting memory leaks itself. See Microsoft Visual C++ Tips and Tricks -> "Memory Leaks" section. See also this post in SO
Although real tracing is only possible with the Team Edtion of Visual Studio.
See the "Source Test Tools" link on the Software QA Testing and Test Tool Resources page for a list of similar tools.
I've used BoundsChecker,DevPartner Studio and Intel V-Tune in the past for profiling. I liked V-Tune the best; you could emulate various Intel chipsets and it would give you hints on how to optimize for that platform.
Does Jochen Kalmbach's Memory Leak Detector qualify?
PS: The URL to the latest version is buried somewhere in the article's comment thread.
LeakDiag, UMDH, App Verifier, DebugDiag, are all useful tools to improve robustness of code and find memory leaks.
The Boost Test library can detect memory leaks.
How about the Purify?
Try Intel's Inspector XE product which can help you detect both memory and threading issues: http://software.intel.com/en-us/articles/intel-inspector-xe/
Perhaps CodeSnitch would be something you're after? http://www.entrek.com/codesnitch.html
If you are developing with Borland/CodeGear/Embarcadero C++ Builder, you could use CodeGuard.
More or less all Profilers include checking for memory leaks and show you the stack when the memory was allocated.
I can recommend Intels Parallel Inspector. Simple to use and no recompilation needed. The trial version runs for 30 days.
GlowCode and AtromatedQA also include such capabilites. They all offer free trials.
Compuware DevPartner (aka BoundsChecker) in Contrast needs a slowed down "instrumentation" recompile and the application also runs slower when checking for errors. And BoundsChecker can not work with 64 Bit evsrions at all. We gave up on that tool.
The best tool I ever used is DevPartner BoundsChecker - it's not free but it has an evaluation period.
Another memory tool for your list: Memory Validator.
Not free, but nowhere near as expensive as Purify or Boundschecker.
If you're not afraid of mingw, here are some links (some might work with MSVC)... http://betterlogic.com/roger/?p=1140
We are just completing a Memory Safety checking tool for Windows, that handles GCC and Micrsoft Visual C (not C++ yet), and are looking for Beta testers.
EDIT June 12, 2011: Not Beta anymore, now production for GCC and Microsoft Visual Studio C.
I found this SF project today:
http://sourceforge.net/p/valgrind4win/wiki/Home/
They are porting valgrind to Windows. Probably in several years we will have a reliable valgrind on windows.
Check out this question: Is there a good Valgrind substitute for Windows? . Though general substitute for valgrind is asked, it mainly discusses memory leak detectors and not race conditions detections.
I used Insure++ which does excellent job in finding c++ memory leaks/corruptions and many other bugs like uninitialized variables, pointer errors, strings etc., It also does visual "Code coverage" and run time memory usage etc.. which give more confident on your code.. You can try it for trail version..
You might want to read what Mozilla is doing regarding memory leaks. One tool in their toolbox is the Hans Boehm garbage collector used as memory leak detector.
You can give a try to RuntimeChecker trial ot to IBM Purify trial..
A free solution would be to use the following code in Visual Studio:
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
Just write this in the top of all your cpp files. This will detect memory leaks of your application whenc stopping debug run and list them in the output window. Double clicking on a memory leaks line will higlight you the line where memory is allocated and never released. This may help you : http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
참고URL : https://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows
'Programing' 카테고리의 다른 글
보다 큼 /보다 큼에 대한 스위치 설명 (0) | 2020.05.01 |
---|---|
5 살짜리에게 의존성 주입을 설명하는 방법? (0) | 2020.05.01 |
intval과 int-`(int) X`로 캐스팅하는 데 특별한 차이점이 있습니까? (0) | 2020.04.30 |
왜 파이썬에는 부호 함수가 없습니까? (0) | 2020.04.30 |
동적 변수에서 속성을 사용할 수 있는지 테스트 (0) | 2020.04.30 |