Bellek hata ayıklayıcı - Memory debugger
| Program yürütme |
|---|
| Genel konseptler |
| Kod türleri |
| Derleme stratejileri |
|
| Önemli çalışma zamanları |
|
| Önemli derleyiciler ve araç zincirleri |
|
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
- Profil oluşturma (bilgisayar programlama)
- Performans analizi araçlarının listesi
- hata ayıklayıcı
- Çalışma zamanı hatası algılama
- Yazılım testi
- Yazılım Mühendisliği
- Bilgisayar Programlama
- çekirdek dökümü
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
- " Av Hafıza Bugs Ivan Skytte Jørgensen"
- " Serbest Hafıza dama Karşılaştırılması Jean-Philippe Martin tarafından"