GDB (GNU Project hata ayıklayıcısı olarak da bilinir), kullanıcılara ve geliştiricilere, başka bir programda neler olup bittiğini görmek için açık kaynak kodlu ve ücretsiz bir komut satırı yazılımıdır. yürütülür veya belirli bir noktada neden bir uygulama çöküyor?
Bir bakışta özellikler
Temel özellikler, geliştiricilerin eylemde hataları yakalamalarına yardımcı olmak, bir uygulamayı başlatmak ve davranışlarını etkileyebilecek herhangi bir şey belirtmek, belirli koşullarda bir programın durmasını sağlamak, uygulama çöktüğünde günlükleri incelemek, aşamalı olarak değişiklikleri Bir problemin etkilerini düzeltmek için deney yapmak ve başka bir hatayı öğrenmeye devam etmek için bir program. Ayrıca C, C ++, Pascal dahil olmak üzere çok çeşitli programlama dillerinde yazılmış programların hata ayıklanmasını da destekler. , Ada, Objective-C ve diğerleri.
Bu bir komut satırı uygulaması
GNU Project hata ayıklayıcısı her zaman bir komut satırı uygulamasıdır. Kullanmak için & ldquo; gdb & rdquo; bir terminal emülatörüne komut verin, ardından & ldquo; help & rdquo; komut (tırnak işaretleri olmadan) gdb komut istemi. Ayrıca, & ldquo; help all & rdquo; Tüm komutların listesini görüntülemek için komut yazın, tam belgeyi görüntülemek için komutun adını yazın, ardından "help" yazın ve ardından o sınıftaki komutların listesini görüntülemek için "apropos word" yazarak bir sınıf adı yazın. "kelime" ile ilgili komutlar için
Komut sınıflarının listesi
& ldquo; yazdıktan sonra yardım & rdquo; Yukarıda açıklandığı gibi, diğer adların takma adlarını (alias'ları görüntüler), kesme noktalarını (programın belirli noktalarda durmasını sağlar), verileri (verileri incelemek için), dosyaları (dosyaları incelemek için) içeren komutların bir listesini göreceksiniz. , dahili (bakım komutları), belirsiz (belirsiz özellikler), koşma (programı çalıştırmak için), yığın (yığının incelenmesi için), durum (durum sorguları için), destek (destek tesisleri için), izleme noktaları (izleme olmadan program yürütme için) programı durdurur) ve kullanıcı tanımlı (kullanıcı tanımlı komutlar).
Desteklenen donanım platformları ve İşletim Sistemleri
GDB, Microsoft Windows ve bazı popüler Linux / UNIX türevleri gibi ana işletim sistemlerinde çalışan çapraz platform uygulaması olmak üzere ofset'ten tasarlanmıştır. Hem 32 bit hem de 64 bit donanım platformlarında desteklenir.
Bu sürümde yeni olan :
- PR gdb / 22824 (GDB 8.1 NEWS dosyasında yeni rbreak Python işlevinin yanıltıcı açıklaması)
- PR gdb / 22849 (ctrl-c genişletilmiş uzaktan çalışmıyor)
- PR gdb / 22907 ([Regresyon] gdbserver yalnızca dosya adı ikili dosyaları ile çalışmaz)
- PR gdb / 23028 (vcvtpd2dq'nin tutarsız olarak sökülmesi)
- PR gdb / 23053 (Düzeltme -D_GLIBCXX_DEBUG gdb ekleme eklenti regresyonu)
- PR gdb / 23127 ([AArch64] GDB, yüksek Sanal Adresleri kullanan yazılımları ayıklarken kullanılamaz)
- PR sunucusu / 23158 (Windows'ta gdbserver artık işlevsel değil)
- PR kesme noktaları / 23210 ([8.1 / 8.2 Regresyon] Bogus Kesme Noktası adresi 0xf7fe7dd3'den 0xfffffffff7fe7dd3'e ayarlandı)
Sürüm 8.1’de yeni: :
- C ++ işlevlerindeki kesme noktaları artık tüm kapsamlarda varsayılan olarak ayarlanmıştır (& quot; vahşi & quot; eşleme);
- C ++ ABI etiketleri ile işaretlenmiş işlevler üzerinde kesme noktaları eklemek için destek;
- İfade değerlendirme sırasında kayan noktalı aritmetik emülasyonu hedefle (MPFR 3.1 veya daha yenisini gerektirir);
- Çeşitli Python Komut Dosyası geliştirmeleri;
- Geliştirilmiş Pas desteği; Özellikle, Trait nesneleri artık Rust kodu ayıklanırken denetlenebilir;
- GDB, hatalı ve genellikle kafa karıştırıcı sonuçlar üretmekten kaçınmak için hata ayıklama bilgileri içermeyen sembollerin türü hakkında artık varsayımlarda bulunmaz.
- 'Etkinleştir' ve 'devre dışı bırak' komutları artık bir dizi kesme noktası konumunu kabul ediyor;
- Programı ilk komutta başlatmak için yeni 'starti' komutu;
- Düzenli bir ifade kalıbıyla bir takım kesme noktaları eklemek için yeni 'rbreak' komutu (Python gerektirir);
- 'ptype' komutu artık bir yapıda alanların ofsetini ve boyutunu yazdırmayı destekliyor;
- 'gcore' komutu artık tüm bellek eşlemelerini ('-a' komut satırı seçeneği) boşaltmayı destekliyor;
- TUI Tek Tuş modu için yeni kısayollar: 'i' stepi ve 'o' için nexti;
- GDBserver geliştirmeleri:
- Ortam değişkenlerini GDBserver'e iletme desteği;
- Belirli bir başlangıç çalışma dizini ile aşağı işlemlerin başlatılması için destek;
- Unix sistemlerinde, glob genişleme ve alt komut satırı argümanlarının değişken ikamesi için destek;
- Çeşitli tamamlama geliştirmeleri;
- 'Derleme' komutuyla kod derlemek ve enjekte etmek için kullanılan komut şimdi yapılandırılabilir;
- Hata ayıklama bilgisi gerekmediğinde GDB açılışını hızlandırmak için yeni '--readnever' komut satırı seçeneği
- Aşağıdaki yeni yerel yapılandırmalar için destek:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / kol (kol * - * - freebsd *);
- Aşağıdaki yeni hedefler için destek:
- FreeBSD / aarch64 (aarch64 * - * - freebsd *);
- FreeBSD / kol (kol * - * - freebsd *);
- OpenRISC ELF (or1k * - * - elf)
- Aşağıdaki hedefler ve yerel yapılandırmalar için destek kaldırıldı:
- Solaris2 / x86 (i? 86 - * - solaris2. [0-9]);
- Solaris2 / sparc (sparc * - * - solaris2. [0-9]);
Sürümde yeni: :
- GDB'nin bu sürümünü oluşturmak için şu araçlar gereklidir:
- Bir C ++ - 11 derleyici (örneğin, GCC 4.8 veya üstü);
- GNU, 3.81 veya daha yeni bir sürüm oluşturuyor.
- Bu sürümdeki değişiklikler şunları içerir:
- C ++: Referans referanslar için destek
- Python komut dosyası geliştirmeleri:
- Çalışan btrace kaydını başlatmak, durdurmak ve erişmek için yeni işlevler.
- gdb.Type. 'de referans referans desteği
- GDB, tercüman komutları verir:
- Kullanıcı komutları artık sınırsız sayıda argüman kabul ediyor.
- & quot; eval & quot; komut şimdi kullanıcı tanımlı argümanları genişletir.
- DWARF sürüm 5 desteği
- (.debug_names dizininin henüz desteklenmediğini unutmayın.)
- GDB / MI geliştirmeleri:
- Programdaki paylaşılan kitaplıkları listelemek için yeni dosya listesi paylaşımlı kütüphaneler komutu.
- Flash belleği silmek için yeni -target-flash-silme komutu.
- Yerel FreeBSD / mips desteği (mips * - * - freebsd)
- Aşağıdaki hedefler için destek:
- Synopsys ARC (ark * - * - elf32)
- FreeBSD / mips (mips * - * - freebsd)
- Çeşitli geliştirmeler:
- Komut satırı yönlendirme artık MS-Windows ana bilgisayarlarında destekleniyor.
- MS Windows'taki iş parçacığı için destek.
- GNU / Linux üzerindeki PKU kaydına destek.
- Sparc32 ve sparc64'teki hedef tanımları için destek.
- Flash belleği silmek için yeni GDB / CLI komutu
- rdrand ve rdseed yönergeleri kayıt / yeniden oynatma desteği.
- Aşağıdaki özelliklerin desteği kaldırıldı:
- gcj ile derlenmiş Java programları için destek
- Aşağıdaki konfigürasyonlar için destek:
- FreeBSD / alfa (alfa * - * - freebsd *)
- GNU / kFreeBSD / alfa (alfa * - * - kfreebsd * -gnu)
7.9.1 sürümünde yeni :
- PR yapı / 18033 (C ++ stili yorumu gdb / iq2000-tdep.c ve gdb / derleme / derleme - *. c)
- PR build / 18298 ("derleme" komutu, araçlar quadruplet yerine üçlü ile yapılandırılırsa derleyici bulamaz)
- PR tui / 18311 (TUI modunda yazmaçları görüntülerken rastgele SEGV)
- PR python / 18299 (ayrıntılı bir global yazıcıyı ayrıntılı modda kaydederken istisna)
- PR python / 18066 (argüman "kelime") Command.complete (metin, kelime) içinde bozuk görünüyor)
- PR pascal / 17815 (Test alanı ile sınıf alanları için pascal davranışı düzeltin)
- PR python / 18285 (ptype expr-with-xmethod, SEGV'ye neden olur)
Sürüm 7.9’da yeni: :
- Python komut dosyası geliştirmeleri.
- Kaynak kod derlemesi ve aşağı seviyeye enjeksiyon.
- Yeni komutlar, seçenekler, kolaylık değişkenleri / seçenekler.
- MIPS SDE desteği (mips * -sde * -elf *).
- Dişli programlarda hata ayıklama yaparken daha iyi sinyal işleme.
Sürüm 7.8.2'deki yeni :
- PR symtab / 17642 ([7.8 regresyon] dahili -ror: resolve_dynamic_struct: "TYPE_NFIELDS (type) & gt; 0" ifadesi başarısız oldu.)
- PR binutils / 17677 (_bfd_elf_get_synthetic_symtab, O (n ^ 2) karmaşıklığında çalışır)
- PR gdb / 16215 (SPARC: bu çerçeve için CFA'yı hesaplayamaz)
- PR gdb / 17525 (program -x komut dosyasından çalıştırıldığında hedef-eşzamansız: kesme noktası komutları yürütülmez)
- PR cli / 17828 ([7.8 regresyon] -batch -ex r sonlandırma terminali)
Sürüm 7.8.1’de yeni: :
- PR python / 17364 (bound_registers.py dosyasında daha iyi yazıcı adları gerekir)
- PR yapısı / 17104 (CFLAGS = "-Wext -Wextra" gdb / confgure --with-babeltrace başarısız olur)
- PR gdb / 17345 (babeltrace (1.1.2 ve üstü), GDB tarafından üretilen ctf verileri hakkında şikâyet ediyor)
- PR build / 17298 (gcore: Kayıtlar alınamadı: Böyle bir işlem yok)
- PR python / 17342 (Xmethod Python, Python 3 uyumlu değildir)
- PR python / 17355 (Python frame'indeki ve okunamaz argümanlı çerçeve filtreleri)
- PR guile / 17367 (pkg-config betiği --with-guile ile argüman olarak verildiğinde lonca yolunun yanlış hesaplanması)
- PR gdb / 17247 (çoklu iş parçacıklı uygulamada gdb donuyor)
- PR gdb / 17347 (Regresyon: GDB, ekli işlemle birlikte çalışmayı durdurdu)
- PR gdb / 17407 (Linux vDSO okuması için regresyon)
- PR sunucusu / 17457 (aarch64 / gdbserver: yanlış kayan nokta kayıt ekranı)
- PR sunucusu / 17487 (state-> gt_control_mirror == 0, Windows'ta gdbserver'da başarısız oldu)
- PR gdb / 17472 (ek açıklamalarla birlikte, ön planda çalıştırılırken readline / gdb çöküyor)
- PR gdb / 17471 (arka plan komutunun tekrarlanması ön plana çıkar)
- PR cli / 17300 (devamsız olarak durma modunda kilitlenme -a & (readline_callback_read_char () işleyici olmadan çağrılır!))
- PR python / 17372 (yardım görüntülendiğinde python kilitleniyor ())
- PR python / 17408 (../../gdb/infrun.c:5256: iç hata: switch_back_to_stepped_thread: Assertion `! schedlock_applies (1) 'başarısız oldu.)
7.8 sürümündeki yeni :
- Guile komut dosyası desteği.
- Python komut dosyası geliştirmeleri.
- Yeni komutlar, seçenekler, kolaylık değişkenleri / seçenekler.
- Uzak Protokol ve GDBserver geliştirmeleri.
- Yeni hedef yapılandırmaları (PowerPC64 GNU / Linux küçük endian).
- btrace geliştirmeleri.
- ISO C99 değişken uzunluklu otomatik diziler desteği.
- & quot; Karşılaştırma bölümleri & quot; Komut şimdi tüm hedeflerde çalışır.
- & quot; hedef yerel & quot; komut artık yerel hedefe bağlanıyor.
Sürüm 7.7’de yeni: :
- Geliştirilmiş Python komut dosyası desteği.
- Bazı C ++ geliştirmeleri.
- Yeni komutlar, seçenekler, kolaylık değişkenleri / seçenekler.
- Birkaç GDB / MI yeni komut ve iyileştirme.
- Uzak Protokol ve GDBserver geliştirmeleri.
- Yeni hedef yapılandırmaları (Nios II, TI MSP430).
- GDB Windows x64 veri desteğinin açılması.
- SystemTap SDT probları, AArch64 GNU / Linux üzerinde destek sağlar.
- CTF (Ortak İzleme Biçimi) desteği.
- Yeni komut dosyaları gcore ve gdb-add-index.sh.
- Geliştirilmiş kol * -kendi kayıt / yeniden oynatma desteği.
- NetBSD ve OpenBSD eski konfigürasyonları için destek kaldırıldı. Bu yapılandırmaların ELF varyantları destekleniyor.
- & quot; set | remotebaud & quot; komutlar, "show | show seri baud" ifadesinin lehine önerilmemektedir.
Sürüm 6.6.2'deki yeni :
- PR kesme noktası / 16251 (AArch64 donanım hatası hatası sonra çatal)
- PR gdb / 16303 (GDB 7.6.1, MIPS16 ve microMIPS üzerinde 2.24 binutils ile çalışmaz)
Sürüm 7.6.1’de yeni: :
- PR tdep / 15420 (x86-solaris'in daha yeni sürümlerinde iş parçacıklı programlarda hata ayıklanamaz - Solaris 10, Güncelleştirme 10 veya sonrası)
- PR uzaktan / 15455 (QTro uzak paket bozuk)
- PR build / 15476 (utils.h dosyasında eksik enum türü nedeniyle başarısızlık hatası)
- PR sunucusu / 15594 (64x32 x86 gdbserver'daki tls desteği adresi 64 bit'e yükseltmez)
- PR sunucusu / 15075 (dprintf, "sonraki" ile etkileşir)
- PR sunucusu / 15434 (dprintf, kesintisiz modda bile senkron bir 'devam et' kullanır)
- PR tui / 14880 (ayrık kayıt düzenlerinde yukarı, değer.c'de hata ayıklama hatasıyla sonuçlanır)
- PR c ++ / 15519 (GDB 7.6, belirli bir çekirdek dosyası kullanılarak GDB 7.5.1'den 94x daha yavaştır)
- PR gdb / 15837 (GDB yerel değişkenler için girdi değerlerini yazdırır)
- PR gdb / 15415 (gdb, argv [0] iletilirken sembolik bağları çözer)
- PR cli / 15603 (CTRL-C artık inferior kesebilir)
- PR gdb / 15604 (gdbserver soket sızıntısı 7.5 regresyon)
Sürüm 7.5’de yeni: :
- Dil desteğine git.
- Yeni hedefler (x32 ABI, microMIPS, Renesas RL78, HP OpenVMS ia64).
- Diğer Python komut dosyası iyileştirmeleri.
- SDT (Statik Tanımlı İzleme) probları, SystemTap problarıyla desteklenir.
- GDBserver geliştirmeleri (stdio bağlantıları, kesme noktası koşullarının hedef tarafı değerlendirmesi, uzaktan protokol iyileştirmeleri).
- Diğer çeşitli iyileştirmeler (paylaşılan bir kitaplık yüklendiğinde / yüklenirken durması, dinamik yazdırma, vb.).
- ARM'de ters hata ayıklama.
- İkili "gdbtui" terk edilmiş ve artık inşa edilemez. & Quot; gdb -tui & quot; yerine.
Sürüm 7.4'teki yeni :
- Belirsiz çizgiler artık daha tutarlı bir şekilde ele alınmıştır.
- İlgisiz işlevler ve dosyalar artık "atlama işlevi" ile adım atıldığında atlanabilir. ve & quot; dosya atla & quot; komutlar.
- Uzak hedef donanım izleme noktasının maksimum uzunluk sınırını ayarlama ve alma komutları eklendi.
- Python komut dosyası büyük ölçüde geliştirildi.
- Diğer iyileştirmeler, hata düzeltmeleri ve genel değişiklikler yapıldı.
Sürüm 7.1’de yeni: :
- Yeni hedefler için destek (bir simülatör dahil):
- Xilinx MicroBlaze
- Renesas RX
- Başlıca yeni özellikler:
- Çok programlı hata ayıklama, hata ayıklayıcının 'den daha fazla kontrol etmesine izin verir.
- aynı GDB oturumunda bir program.
- Konum Bağımsız Yürütülebilir (PIE) hata ayıklama.
- Ayrıca, aşağıdakiler de dahil olmak üzere birçok geliştirme ve hata düzeltmesi içerir:
- Python desteği genişletildi.
- C ++ desteği iyileştirmeleri (ad alanı, yayın operatörleri, hata düzeltmeleri)
- Tracepoint desteği geliştirmeleri.
- İşlem Kaydı iyileştirmeleri (yürütme günlüğünü, donanımı kaydet / geri yükle
- izleme noktası desteği.
- Uzak protokol geliştirmeleri (Linux çekirdeği hata ayıklaması, yeni paketler )
- )
tracepoint desteği için
Yorum Bulunamadı