kodlu gdb bölünmüş görünümü


111

Sadece gdb'de bir programın hatalarını ayıklıyordum ve bir şekilde daha önce hiç görmediğim ve hatta duymadığım yeni bir özellik buldum, komut vermenin yanı sıra kodu görebileceğim ve tarayabileceğim bir bölünmüş görünüm:

Resim için üzgünüm ama ttys'in ekran görüntüsü yok.

Bu nedir? Ne yaptım veya daha spesifik olarak, bu bölünmüş ekran modunu tekrar nasıl alabilirim? Bu modun bir adı var mı yoksa nasıl kullanılacağını okuyabileceğim bir yer var mı?


2
Hızlı başvuru için: Bu moddan Cx Ca, Cx a veya Cx A'dan herhangi birini kullanarak çıkabilirsiniz . Bu soruya bakın .
Richard

Yanıtlar:


95

Adı TUI (şaka değil). Örneğin gdbtuiveya ile başlayın gdb -tui...


11
normal bir şekilde layout nextbaşladıktan sonra da kullanabilirsinizgdb
khaverim

87

ctrl+ xVe ctrl+ düğmelerine basarak dinamik olarak tetikleyebilirsiniz a.


teşekkürler @ user146043, ekranı ctrl-a ile aynı anda çalıştırıyorsanız, ekran komutlarını başlatmanın tek yolu budur!
olik79

Görünüşe göre bu kombo ile kapatabilirsin!
Nick Desaulniers



15

GDB Gösterge Tablosu

https://github.com/cyrus-and/gdb-dashboard

GDB gösterge tablosu resmi GDB Python API'sini kullanır ve istediğiniz bilgileri GDB durduğunda, örneğin yerel komutnext gibi a'dan sonra yazdırır .display

TUI'ye karşı:

  • kabuğu daha sihirli bir curses durumuna koymak yerine stdout'a yazdırdığı için daha sağlamdır, örneğin:

  • Python'dan son derece yapılandırılabilir: neyi çıkarmak istediğinizi ve hata ayıkladığınız şeye bağlı olarak her bölümün ne kadar büyük olduğunu seçebilirsiniz.

    En kullanışlı görünümler halihazırda uygulanmıştır: kaynak, derleme, kayıtlar, yığın, bellek, iş parçacıkları, ifadeler ... ancak GDB Python API'sinde açığa çıkan herhangi bir bilgiyle genişletmek kolay olmalıdır.

    TUI yalnızca iki kaynak, montaj ve kayıt gösterilmesine izin verir ve hepsi bu kadar. Tabii ki C kaynak kodunu değiştirmek istemiyorsanız ;-)

görüntü açıklamasını buraya girin

GDB'nin böyle bir kurulumla kutudan çıkması ve varsayılan olarak açılması gerektiğine inanıyorum, bu şekilde çok daha fazla kullanıcı çekecektir.

Oh, ve ana geliştirici Andrea Cardaci , çok duyarlı ve harika. Büyük tebrikler.

Ayrıca bkz: Etkileşimli hata ayıklama sırasında gdb çıktısı nasıl vurgulanır ve renklendirilir?


2
Bunun ne kadar harika olduğunu tarif edecek yeterli kelime yok. Teşekkür :)
unresolved_external

11

Tür layoutgdb bir komuta ve split pencere olarak gösterilecektir.


5

GDB standart moddayken, winkullanımı otomatik olarak TUI moduna geçecektir.
TUI modu için diğer komutlar:

  • info win
    Görüntülenen tüm pencereleri listeleyin ve boyutlarını verin.
  • focus next | prev | src | asm | regs | split
    Odağı adlandırılmış pencereye ayarlayın. Bu komut, aktif pencereyi değiştirmeye izin verir, böylece kaydırma tuşları başka bir pencereye etkilenebilir.

Daha fazla yardım için burayı okuyun .


2

GDB için cgdb adında bir arayüz aracı da vardır. Biraz renk vurgulamayla bile. Kod görünümüne geçmek için "ESC", gdb'ye geri dönmek için "i"

cgdb


1

tui modu açıkça emacs'den esinlenmiştir - bunu, emacs'de bölünmüş pencereler arasında geçiş yapan ^ Xo'ya bastığımda kazara keşfettim - bazen yapmam gereken şey farklı bir programa geçmek olduğunda bunu düşünmeden vuruyorum. Her neyse, bu henüz bahsedilmeyen başka bir özelliğe yol açar, imleci kod penceresinden (kaydırabileceğiniz yer) komut satırına veya tam tersi ^ Xo ile hareket ettirebilirsiniz.


Açıkçası, GNU'daki programların çoğu, esas olarak tutarlılık nedenlerinden dolayı tuş atamaları gibi emac'lere sahiptir. Bash'de bir vi modu olduğunu biliyorum, ancak bu emacs modu kadar yeterince iyi değil.
klaus
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.