Saya mencari Valgrind untuk membantu meningkatkan coding C / debugging saya ketika saya menemukan itu hanya untuk Linux - Saya tidak punya kebutuhan atau minat lain dalam memindahkan OS saya ke Linux jadi saya bertanya-tanya apakah ada program yang sama bagusnya untuk Windows.
210
Jawaban:
Beberapa alat komersial yang lebih baik:
sumber
Seperti yang ditunjukkan jakobengblom2, valgrind memiliki serangkaian alat. Tergantung yang mana yang Anda bicarakan ada beberapa bagian penghitung jendela. Saya hanya akan menyebutkan OSS atau alat gratis di sini.
1. MemCheck:
Memory Dr. Ini adalah alat yang relatif baru, bekerja dengan sangat baik pada Windows 7. Fitur favorit saya adalah mengelompokkan tumpukan alokasi kebocoran yang sama dalam laporan.
http://code.google.com/p/drmemory/
Saya juga menggunakan UMDH ( http://support.microsoft.com/kb/268343 ) dan merasa cukup berguna dan mudah diatur. Ini bekerja dari Win2000 ke Win7.
AppVerifier adalah harus memiliki swissknife untuk pengembang kode asli windows, "memory" checker-nya melakukan pekerjaan yang sama http://msdn.microsoft.com/en-us/library/dd371695%28v=vs.85%29.aspx
2. Callgrind:
Favorit saya adalah sangat mengantuk ( http://www.codersnotes.com/sleepy ) Ini kecil tapi sangat berguna dan mudah digunakan.
Jika Anda membutuhkan lebih banyak fitur, AMD CodeAnalyst ™ Performance Analyzer gratis: http://developer.amd.com/documentation/videos/pages/introductiontoamdcodeanalystperformanceanalyzer.aspx
Alat Analisis Kinerja Windows bebas dari Microsoft, tidak sangat mudah digunakan tetapi dapat menyelesaikan pekerjaan jika Anda bersedia menghabiskan waktu. http://blogs.microsoft.co.il/blogs/sasha/archive/2008/03/15/xperf-windows-performance-toolkit.aspx Unduh: http://msdn.microsoft.com/en-us/performance / cc752957
3. Massif:
Alat gratis serupa (tidak persis sama persis) di windows adalah:
VMMap dari sysinternals: http://technet.microsoft.com/en-us/sysinternals/dd535533
! heap command in windbg: http://hacksoflife.blogspot.com/2009/06/heap-debugging-memoryresource-leak-with.html
4. Cachegrind:
Di atas disebutkan Windows Performance Tools memiliki tingkat tertentu dari kemampuan L2 cache miss profiling tetapi tidak cukup baik dan mudah digunakan sebagai Cachegrind.
5. DRD:
Belum menemukan sesuatu yang gratis dan sekuat Windows, satu-satunya alat gratis untuk windows yang saya temukan agak dekat adalah pemeriksa "kunci" di AppVerifier: http://msdn.microsoft.com/en-us/library /dd371695%28v=vs.85%29.aspx
sumber
Mengapa tidak menggunakan Valgrind + Wine untuk men-debug aplikasi Windows Anda? Lihat http://wiki.winehq.org/Wine_and_Valgrind
(Chromium menggunakan ini untuk memeriksa versi Windows untuk kesalahan memori; lihat build.chromium.org dan lihat air terjun eksperimental atau memori, dan cari anggur.)
Ada juga Dr. Memory, lihat dynamorio.org/drmemory.html
sumber
Untuk Visual C ++, coba Visual Leak Detector . Ketika saya menggunakannya, mendeteksi kebocoran memori dari
new
panggilan dan mengembalikan baris aktual dalam kode sumber kebocoran. Rilis terbaru dapat ditemukan di http://vld.codeplex.com/ .sumber
Lingkungan pengembangan untuk Windows yang Anda gunakan mungkin mengandung alat sendiri. Visual Studio, misalnya, memungkinkan Anda mendeteksi dan mengisolasi kebocoran memori dalam program Anda
sumber
saya ingin daftar beberapa alat, harapan akan bermanfaat
baca artikel ini untuk lebih detail
sumber
Coba DUMA
sumber
Ada Pageheap.exe bagian dari alat debugging untuk Windows. Ini gratis dan pada dasarnya adalah pengalokasi / deallocator memori khusus.
Lihat http://support.microsoft.com/kb/286470
sumber
gflags
+gdb
(dari mingw) membantu dalam diagnosis.Dalam kombinasi dengan Visual Studio saya biasanya menggunakan Visual Leak Detector atau cukup _CrtDumpMemoryLeaks () yang merupakan panggilan api win32. Keduanya tidak mewah tetapi mereka menyelesaikan pekerjaan.
sumber
Saya memiliki kesempatan untuk menggunakan Compuware DevPartner Studio di masa lalu dan itu benar-benar bagus, tapi itu cukup mahal. Solusi yang lebih murah adalah GlowCode , saya hanya bekerja dengan versi 5.x dan, meskipun ada beberapa masalah dalam melampirkan proses yang saya butuhkan untuk debug, ini bekerja dengan cukup baik.
sumber
Saya telah mencintai Memory Validator , dari sebuah perusahaan bernama Verifikasi Perangkat Lunak.
sumber
Viusual Studio dapat membantu mendeteksi kebocoran memori itu sendiri. Lihat Microsoft Visual C ++ Tip dan Trik -> bagian "Kebocoran Memori". Lihat juga ini posting di SO
Meskipun penelusuran sebenarnya hanya mungkin dilakukan dengan Tim Edtion of Visual Studio.
sumber
Lihat tautan " Alat Uji Sumber " pada halaman Perangkat Lunak QA Pengujian dan Sumber Daya Alat Uji untuk daftar alat serupa.
Saya telah menggunakan BoundsChecker, DevPartner Studio dan Intel V-Tune di masa lalu untuk profil. Saya menyukai V-Tune yang terbaik; Anda bisa meniru berbagai chipset Intel dan itu akan memberi Anda petunjuk tentang cara mengoptimalkan untuk platform itu.
sumber
Apakah Memory Leak Detector dari Jochen Kalmbach memenuhi syarat?
PS: URL ke versi terbaru dimakamkan di suatu tempat di utas komentar artikel.
sumber
LeakDiag, UMDH, App Verifier, DebugDiag, semua adalah alat yang berguna untuk meningkatkan kekokohan kode dan menemukan kebocoran memori.
sumber
Pustaka Tes Peningkatan dapat mendeteksi kebocoran memori.
sumber
Bagaimana dengan Purify ?
sumber
Coba produk Intel Inspector XE yang dapat membantu Anda mendeteksi masalah memori dan threading: http://software.intel.com/en-us/articles/intel-inspector-xe/
sumber
Mungkin CodeSnitch akan menjadi sesuatu yang Anda cari? http://www.entrek.com/codesnitch.html
sumber
Jika Anda mengembangkan dengan Borland / CodeGear / Embarcadero C ++ Builder, Anda bisa menggunakan CodeGuard.
sumber
Kurang lebih semua Profiler termasuk memeriksa kebocoran memori dan menunjukkan kepada Anda tumpukan ketika memori dialokasikan.
Saya dapat merekomendasikan Intels Parallel Inspector . Mudah digunakan dan tidak perlu dikompilasi ulang. Versi percobaan berjalan selama 30 hari.
GlowCode dan AtromatedQA juga menyertakan kapabilit tersebut. Mereka semua menawarkan uji coba gratis.
Compuware DevPartner (alias BoundsChecker) di Contrast membutuhkan kompilasi ulang "instrumentasi" yang diperlambat dan aplikasi juga berjalan lebih lambat saat memeriksa kesalahan. Dan BoundsChecker tidak dapat bekerja dengan evsrions 64 Bit sama sekali. Kami menyerah pada alat itu.
sumber
Alat terbaik yang pernah saya gunakan adalah DevPartner BoundsChecker - ini tidak gratis tetapi memiliki periode evaluasi.
sumber
Alat memori lain untuk daftar Anda: Memory Validator .
Tidak gratis, tapi tidak semahal Purify atau Boundschecker.
sumber
Jika Anda tidak takut mingw, berikut adalah beberapa tautan (beberapa mungkin berfungsi dengan MSVC) ... http://betterlogic.com/roger/?p=1140
sumber
Kami baru saja menyelesaikan alat pemeriksaan Keamanan Memori untuk Windows, yang menangani GCC dan Micrsoft Visual C (belum C ++), dan sedang mencari penguji Beta.
EDIT 12 Juni 2011: Bukan Beta lagi, sekarang produksi untuk GCC dan Microsoft Visual Studio C.
sumber
Saya menemukan proyek SF ini hari ini:
http://sourceforge.net/p/valgrind4win/wiki/Home/
Mereka porting valgrind ke Windows. Mungkin dalam beberapa tahun kita akan memiliki valgrind yang dapat diandalkan di windows.
sumber
Lihat pertanyaan ini: Apakah ada pengganti Valgrind yang baik untuk Windows? . Meskipun pengganti umum untuk valgrind diminta, ia terutama membahas detektor kebocoran memori dan bukan deteksi kondisi ras.
sumber
Saya menggunakan Insure ++ yang melakukan pekerjaan yang sangat baik dalam menemukan kebocoran memori c ++ / korupsi dan banyak bug lainnya seperti variabel tidak diinisialisasi, kesalahan pointer, string dll., Ini juga melakukan visual "Kode cakupan" dan menjalankan penggunaan memori waktu dll .. yang memberikan lebih percaya diri pada kode Anda .. Anda dapat mencobanya untuk versi jejak ..
sumber
Anda mungkin ingin membaca apa Mozilla lakukan mengenai kebocoran memori. Salah satu alat di kotak peralatan mereka adalah pengumpul sampah Hans Boehm yang digunakan sebagai pendeteksi kebocoran memori.
sumber
Anda dapat mencoba uji coba RuntimeChecker atau ke IBM Purify uji coba ..
Solusi gratis adalah menggunakan kode berikut di Visual Studio:
Cukup tulis ini di atas semua file cpp Anda. Ini akan mendeteksi kebocoran memori aplikasi Anda saat menghentikan proses debug dan mencantumkannya di jendela output. Mengklik dua kali pada garis kebocoran memori akan mengarahkan Anda pada garis di mana memori dialokasikan dan tidak pernah dirilis. Ini dapat membantu Anda: http://www.flipcode.com/archives/How_To_Find_Memory_Leaks.shtml
sumber