Bellek hata ayıklayıcı - Memory debugger

Bir bellek ayıklayıcı a, ayıklayıcı gibi yazılım, bellek sorunlarını bulmak için bellek sızıntıları ve taşmaları tampon . Bunlar, dinamik belleğin tahsisi ve serbest bırakılmasıyla ilgili hatalardan kaynaklanmaktadır . Yönetilen kod gibi çöp toplama özelliğine sahip dillerde yazılmış programların , örneğin koleksiyonlardaki "canlı" referanslardan kaynaklanan bellek sızıntıları için bellek hata ayıklayıcılarına da ihtiyacı olabilir.

genel bakış

Bellek hata ayıklayıcıları, bellek erişimini, ayırmaları ve belleğin serbest bırakılmasını izleyerek çalışır. Birçok bellek hata ayıklayıcı, uygulamaların API'leri çoğunlukla geleneksel dinamik bellek ayırma kitaplıkları ile uyumlu olan özel dinamik bellek ayırma kitaplıkları ile yeniden derlenmesini veya dinamik bağlantı kullanmasını gerektirir. Electric Fence , malloc ile bellek tahsisinde hata ayıklayan böyle bir hata ayıklayıcıdır . Bazı bellek hata ayıklayıcıları (örn. Valgrind ), yürütülebilir dosyayı sanal makine benzeri bir ortamda çalıştırarak, bellek erişimini, ayırmayı ve yeniden ayırmayı izleyerek çalışır, böylece özel bellek ayırma kitaplıklarıyla yeniden derlemeye gerek kalmaz.

Sızıntılar gibi bellek sorunlarını bulmak, belirli koşullar dışında kendilerini göstermeyebilecekleri için son derece zaman alıcı olabilir. Bellek kötüye kullanımını tespit etmek için bir araç kullanmak, süreci çok daha hızlı ve kolay hale getirir.

Anormal derecede yüksek bellek kullanımı yazılımın eskimesine katkıda bulunan bir faktör olabileceğinden, bellek hata ayıklayıcıları, programcıların bilgisayar sistem belleğini tüketecek yazılım anormalliklerinden kaçınmalarına yardımcı olabilir , böylece uzun çalışma süreleri için bile yazılımın yüksek güvenilirliğini sağlar .

Statik analizör ile karşılaştırma

Bazı statik analiz araçları da bellek hatalarının bulunmasına yardımcı olabilir. Bellek hata ayıklayıcıları, bir uygulamanın parçası olarak çalışırken , statik kod analizi , kodu çalıştırmadan analiz ederek gerçekleştirilir. Bu farklı teknikler tipik olarak farklı problem örnekleri bulur ve ikisini birlikte kullanmak en iyi sonucu verir.

Bellek hata ayıklama araçlarının listesi

Bu, bellek hata ayıklaması için yararlı araçların bir listesidir . Bir profil bir bellek ayıklayıcı ile bağlantılı olarak kullanılabilir.

İsim işletim sistemi Lisans Diller teknik
AdresDezenfektan Linux, Mac OS Ücretsiz/açık kaynak (LLVM) C, C++. Derleme zamanı araçları ( Clang ve GCC'de mevcuttur ) ve özel kitaplık
Allinea DDT Linux, Mavi Gen tescilli ticari C, C++ ve F90. Ayrıca süper bilgisayarlarda paralel programlar için Çalışma zamanı - dinamik bağlantı yoluyla
AQtime Windows (Visual Studio, Embarcadero IDE'ler) tescilli ticari .NET, C++, Java, Silverlight, JScript, VBScript Çalışma süresi
kontrol et Solaris
Sınır Denetleyicisi Windows (Visual Studio) tescilli ticari C++ Çalışma zamanı müdahaleleri veya derleme zamanı
Daikon Unix, Windows, Mac OS X Ücretsiz/açık kaynak Java, C/C++, Perl ve Eiffel Çalışma zamanı dinamik değişmez algılama
Debug_new (genel teknik) (genel teknik) C++ Derleme zamanı geçersiz kılma
Deleaker Windows (bağımsız ve Visual Studio, RAD Studio, Qt Creator, CLion için eklentiler) tescilli ticari C++, .Net, Delphi Çalışma zamanı engellemeleri
dmalloc Herhangi Ücretsiz/açık kaynak C Derleme zamanı geçersiz kılma
DinamoRIO § Dr. Hafıza Android, Linux, Windows Ücretsiz/açık kaynak (LGPL ve BSD) Herhangi Çalışma zamanı engellemeleri
Elektrikli çit Unix Ücretsiz/açık kaynak (GPL) C, C++ Derleme zamanı geçersiz kılma
HIZLIMM4 pencereler Ücretsiz/açık kaynak (GPL) Delfi Derleme zamanı geçersiz kılma
IBM Rational Purify Unix, Windows tescilli ticari C++, Java, .NET Çalışma süresi
sigorta++ Windows (Visual Studio eklentisi), Unix tescilli ticari C, C++ kaynak kodu enstrümantasyonu
Intel Müfettişi Windows (Visual Studio), Linux tescilli ticari C, C++, Fortran Çalışma süresi
libcwd Linux (gcc) Ücretsiz/açık kaynak C, C++ Derleme zamanı geçersiz kılma
kitap Solaris Solaris ile birlikte gelir Bağlantı zamanı geçersiz kılma
Memwatch Herhangi biri (programlama kitaplığı) Ücretsiz/açık kaynak C Derleme zamanı geçersiz kılma
mtrace Çeşitli Ücretsiz/açık kaynak (LGPL) GNU C kitaplığı Yerleşik, çıkış erişimleri
MTuner Çeşitli Özgür C, C++ Çalışma zamanı engellemeleri, Bağlantı zamanı geçersiz kılma (MSVC, Clang ve GCC), Sızıntı tespiti
Oracle Solaris Studio (eski adıyla Sun Studio Runtime Checking) Linux, Solaris Tescilli ücretsiz yazılım C, C++, Fortran
OLIVER (APT uluslararası) MVS, MVS/EXA, DOS/VSE Tescilli yazılım IBM Assembler Çalışma zamanı engellemeleri, Hiper Yönetici - Tip 2
Toplam Görünüm Unix, Mac OS X tescilli ticari C, C++, Fortran Çalışma süresi
Valgrind § Memcheck Linux, Mac OS, Android Ücretsiz/açık kaynak (GPL) Herhangi Çalışma zamanı engellemeleri
WinDbg pencereler Tescilli ücretsiz yazılım C, C++, .NET, Python Çalışma süresi

Ayrıca bakınız

Referanslar

  • Michael C. Daconta: C++ İşaretçileri ve Dinamik Bellek Yönetimi , John Wiley & Sons, ISBN  0-471-04998-0
  • Andrew Koenig : C Tuzakları ve Tuzakları , Addison-Wesley, ISBN  0-201-17928-8

Dış bağlantılar