Linux için bir C ++ gdb GUI var mı? [kapalı]


210

Kısaca: Herkes gdb için bir grafik kullanıcı arabirimi, Visual C ++ 'nın en son sürümünde aldığınız özellik kümesine eşit veya yakın getiriyor mu?

Ayrıntılı olarak: Windows'da çok fazla zaman harcayan biri olarak, Linux'ta C ++ kodlamak zorunda kaldığımda bulduğum daha büyük tökezleyen bloklardan biri, komut satırı gdb'yi kullanarak herhangi bir hata ayıklamanın beni birkaç kat daha uzun sürmesi Visual Studio ve uygulama ile daha iyi görünmüyor. Bazı şeyleri grafik olarak ifade etmek daha kolay veya daha hızlıdır.

Özellikle, ben bir GUI arıyorum:

  • Kod üzerine girme, değişkenleri izleme ve kesme noktaları gibi tüm temel özellikleri ele alır
  • Karmaşık ve iç içe C ++ veri türlerinin içeriğini anlar ve görüntüleyebilir
  • Parametre türleri gibi ilgili bilgileri görüntülerken şablonlanmış kod ve veri yapıları tarafından karıştırılmaz ve tercihen akıllıca adım adım ilerleyebilir
  • Dişli uygulamaları idare edebilir ve durumunu değiştirmek veya durumunu görüntülemek için farklı dişler arasında geçiş yapabilir
  • Programı gdb'de başlatmanın yanı sıra, zaten başlatılmış bir sürece ekleme veya çekirdek dökümü okuma işlemlerini gerçekleştirebilir

Eğer böyle bir program mevcut değilse, o zaman insanların mermi noktalarının en azından bir kısmını karşılayan programlarla yaşadıkları deneyimleri duymak isterim. Kimsenin tavsiyesi var mı?

Düzenleme:
Olanakları listeleme harika ve ben ne alabilirim alırsınız, ancak yanıtlarınıza dahil ederseniz daha da yararlı olacaktır:
(a) Bu GUI'yi gerçekten kullanıp kullanmadığınız ve , bu konuda ne olumlu / olumsuz geribildirim var.
(b) Biliyorsanız, yukarıda belirtilen özelliklerden hangisi desteklenmiyor / desteklenmiyor

Listelerin gelmesi kolaydır, bunun gibi siteler harikadır çünkü insanların uygulamalarla kişisel deneyimleri hakkında fikir edinebilirsiniz.


21
+1 "Böyle siteler harika çünkü insanların kişisel deneyimleri hakkında fikir edinebilirsiniz." Günümüzde çok fazla insan IMHO'nun bu noktayı tamamen kaçırdığı bir liste dökümü yapıyor.
kizzx2



Bu gdb ön uçları listesine bakın: sourceware.org/gdb/wiki/GDB%20Front%20Ends ve listedeki ilkini bir şans verin. Çok umut verici ve modern görünüyor ve tarayıcı tabanlı olduğu için platformlar arası: gdbgui.com .
Gabriel Staples

Yanıtlar:


55

Visual Studio hata ayıklayıcısının ham gücü ile rekabet edebilecek GDB'yi kaplayan hiçbir şey bulamazsınız . Çok güçlü ve IDE'nin içine çok iyi entegre edilmiş.

Linux alternatifi olarak, özgür yazılım sizin işinizse DDD'yi deneyin.


2
WinDBG, Visual Studio'nun sunduğundan çok daha üstündür. Görsel stüdyo hata ayıklayıcısı, WinDBG ile aynı mimarinin tepesinde yer alır. Bununla birlikte, GDB'nin Windbg ile karşılaştırırken sorması gereken bir şey yok. DDD'den daha iyi bir grafik hata ayıklayıcı harika olurdu. Eclipse CDT iyi bir alternatiftir. Bence bir KDE UI vardı
bigmonachus

114
Oh bak. Hiç desteklemeden bir iddiada bulunan bir cevap. Ayrıca soruyu cevaplamayan cevabın kabul edilmesi de garip geliyor .
alternatif

3
Buraya gerçek bir cevap arayan herkes için, ddd'nin çöp olduğunu bilin. Bulduğum Linux için en iyi hata ayıklayıcı GUI, özgür yazılım olmayan IDA'dır.
bkconrad

1
Soruyu mümkün olan en iyi şekilde cevaplayın veya hiçbir şey söylemeyin. Her ikisini de kullandıktan sonra Visual Studio daha fazla özellikli, ancak DDD VS'yi kaçırmayacak kadar iyi. Ne yazık ki DDD yaşını gösteriyor.
Alan De Smet

6
Bu yayının güncellenmesi / iyileştirilmesi gerekiyor. Qt Creator, Visual Studio ile eşit, harika.
vharron

85

Eclipse CDT, Visual Studio ile karşılaştırılabilir bir deneyim sağlayacaktır. Eclipse CDT'yi günlük olarak kod yazmak ve yerel ve uzak işlemlerde hata ayıklamak için kullanıyorum.

Eclipse tabanlı bir IDE kullanmaya aşina değilseniz, GUI biraz alışmaya başlar. Ancak, Eclipse'e özgü GUI fikirlerini (örneğin bir perspektif) anladıktan sonra, aracı kullanmak hoş bir deneyim haline gelir.

CDT aracı, kod tabanınızdaki yöntemlere hızlı bir şekilde başvuru bulmanızı sağlayan iyi bir C / C ++ dizinleyici sağlar. Ayrıca güzel bir makro genişletme aracı ve sınırlı yeniden düzenleme desteği sağlar.

Hata ayıklama desteği ile ilgili olarak, CDT, çekirdek dökümü okumak dışında listenizdeki her şeyi yapabilir (bunu destekleyebilir, ancak bu özelliği hiç kullanmaya çalışmadım). Ayrıca, şablonlar kullanarak kod hata ayıklama ile ilgili deneyimim sınırlıdır, bu nedenle CDT'nin bu konuda ne tür bir deneyim sağlayacağından emin değilim.

Eclipse CDT kullanarak hata ayıklama hakkında daha fazla bilgi için şu kılavuzlara göz atmak isteyebilirsiniz:


10
Çekirdek dökümleri okumak desteklenir. (Postmortem Hata Ayıklayıcısı olarak adlandırılır.)
Josh Kelley

Eclipse CDT hata ayıklama konusunda Visual Studios'a göre daha iyi bir deneyim yaşadım. Yine de MSVC'ye çok fazla şans vermedim.
notlesh

3
Bence QtCreator Eclipse ile karşılaştırılabilir olduğu belirtilmelidir.
nonsensickle

78

gdb -tui GUI-ish, ama yine de karakter tabanlı bir şey istiyorsanız iyi çalışıyor.


45
'-' komutunu kullanarak gdb'deyken TUI (metin kullanıcı arayüzü) moduna da geçebilirsiniz. Komut istemine dönmek Ctrl-X Ctrl-A'dır. TUI modundayken, kaynakta yukarı, aşağı, sola ve sağa hareket edin. Komut satırı geçmişinde gezinmek için Ctrl-P, Ctrl-N, Ctrl-F ve Ctrl-B tuşlarını kullanın.
Ben Combee

Tam da aradığım şey buydu. Ben hareket ederken güncellenen bazı yararlı görünümleri ile gdb komut satırı gücü.
Kevin Cox

7
Steriods üzerindeki bir .gdbinit, size renkle gerçekten etkileyici bir karakter tabanlı GUI sağlar: github.com/cyrus-and/gdb-dashboard
cs01

Gdb-dashboard'u oldukça seviyorum ama voltron'dan da bahsetmek zorundayım .
nonsensickle

3
@Marry teşekkürler. Merak eden herkes için işte bir link: github.com/cs01/gdbgui . DDD'ye benzer veri yapısı ekranına, X yönlendirmesi gerekmeden uzak makinelerde kolayca hata ayıklamak için bir istemci / sunucu mimarisine ve karmaşık değişkenleri keşfetme yeteneğine sahiptir.
cs01

47

Nemiver C / C ++ Hata Ayıklayıcısına göz atın . Ubuntu'ya (Geliştirici Araçları / Hata Ayıklama) yüklemek kolaydır.

Güncelleme: Yeni bağlantı.


Kesinlikle harika , apt ile de desteklenir: 'apt-get install nemiver'. Benim tek kelime oyunu 'Hiçbir paket gconf-2.0 bulunamadı' nedeniyle repo bina başarısız oldu.
J Evans

arayüz oldukça açık ve okunması iyi, ama arayüz yetenekleri v0.9.6 kullanırken bazen çöküyor. Ayrıca hala ddd yapmasına izin veremedi hata ayıklama uygulama parametrelerini kabul eder.
Kova Gücü

Ayrıca Fedora 30'da da mevcuttur (en azından). Ben sadece bu soru ve nemiver üzerinde şans.
user3236841

31

Qt Creator iyi şeyler gibi görünüyor. Bir meslektaşım hata ayıklama için bunu ayarlamanın bir yolunu gösterdi:

  • Yeni bir proje oluşturun, "Makefile Tabanlı Projenin İçe Aktarılması".
  • Kök proje klasörünüze yönlendirin (altındaki kaynakları dizine ekler ve etkileyici bir şekilde hızlıdır).
  • Proje ayarlarına gidin ve bir çalıştırma yapılandırması ekleyin, ardından hata ayıklamak istediğiniz yürütülebilir dosyayı ve bağımsız değişkenlerini belirtin.
  • Qt Creator hata ayıklamadan önce projenizi oluşturmakta ısrar ediyor gibi görünüyor. Bunu istemiyorsanız veya make'i kullanmıyorsanız, sadece projelere gidin -> build (Sol panel), ardından "Build Steps" (Adımlar Oluştur) öğesinin sağ panelinde, projeyi yarattınız.

Zaten derlediğim bir uygulamada hata ayıklamak için biraz fazla iş gibi görünebilir, ancak buna değer. Hata ayıklayıcı, iş parçacıklarını, yığınları ve yerel değişkenleri Visual Studio'ya benzer şekilde gösterir ve hatta aynı klavye kısayollarının çoğunu kullanır. Şablonları iyi ele alıyor gibi görünüyor, en azından std :: string ve std :: map. Mevcut süreçlere ve çekirdek dökümlere ekleme desteklenmiş gibi görünüyor, ancak henüz test etmedim.

Şimdi ve saatten daha az bir süre kullandığımı unutmayın, ancak şu ana kadar etkilendim.


29

Windows geliştirme fikrinden nefret ediyorum, ancak VC ++ hata ayıklayıcısı gördüğüm en iyiler arasında. VC'ye yakın bir GUI ön ucu bulamadım.

GDB gerçekten alıştıktan sonra harika. Yeterince öfkeyle kullanın ve çok yetkin hale geleceksiniz. Artık listelediğiniz her şeyi fazla çaba sarf etmeden bir programın etrafında dolaşabilirim. Yetkin olmadan önce bir uzak sunucuya SSH bağlantısı üzerinden acı çekmek bir ay kadar sürdü. Asla geri dönmek olmaz.

DDD gerçekten güçlü ama oldukça hatalıydı. GDB'den mesaj almadığında oldukça sık donduğunu gördüm. İyi bir şey çünkü bir gdb arayüz penceresi var, böylece neler olduğunu görebilir ve ayrıca doğrudan gdb ile etkileşime girebilirsiniz. DDD, ortamımdaki uzak bir X oturumunda kullanılamaz (gerçek bir sorun, çünkü Unix dev yaptığımda ince bir istemcide oturuyorum çünkü) bu yüzden benim için.

KDevelop tipik KDE stilini izledi ve her şeyi kullanıcıya gösterdi. Ayrıca KDevelop olmayan KDevelop programlarında hata ayıklama konusunda hiç şansım olmadı.

Gnat Programlama Stüdyosu (GPS) aslında GDB için oldukça iyi bir ön uçtur. Sadece Ada projelerini yönetmekle kalmaz, bu yüzden bir hata ayıklayıcıya ihtiyacınız varsa denemeye değer.

Eclipse'i kullanabilirsiniz, ancak oldukça ağır bir ağırlık ve birlikte çalıştığım birçok deneyimli Unix insanı (ben dahil) arayüzü için çok fazla umursamıyor, ki bu sadece STFU ve yoldan çıkmayacak. Tutulma da çok yer kaplıyor ve köpek gibi koşuyor.


2
Sadece projemi takmak istedim, gdbgui ( github.com/cs01/gdbgui ). Bu bir istemci / sunucu mimarisi olduğundan, X oturumu gerekmeden uzak makinelerde hata ayıklamada iyi çalışır. Ayrıca GDB ile doğrudan etkileşime girmek için bir terminale sahiptir ve DDD'ye benzer şekilde veri yapılarını görüntülemek için görsellere sahiptir.
cs01

Tecrübeye dayalı artı ve eksilerle karşılaştırmalar. Tam olarak bu sorunun ihtiyacı var. ty
Heath Raftery


16

DDD'yi çok kullanıyorum ve kullanmayı öğrendiğinizde oldukça güçlü. Söyleyeceğim bir şey, WAN üzerinden X üzerinde kullanmayın, çünkü birçok gereksiz ekran güncellemesi yapıyor gibi görünüyor.

Ayrıca, GDB ile eşleştirilmediyseniz ve biraz nakit para yatırmak sakıncası yoksa, TotalView'u deneyeceğim. Biraz dik bir öğrenme eğrisine sahiptir (kesinlikle daha sezgisel olabilir), ancak şimdiye kadar herhangi bir platformda kullandığım en iyi C ++ hata ayıklayıcısıdır ve nesnelerinizi özel yollarla introspektize etmek için genişletilebilir (böylece bir STL listesi, kafa karıştırıcı dahili veri üyelerini değil, gerçek bir nesne listesi olarak)


DDD'yi uzaktan X üzerinden çalışmak için alamıyorum; sadece ince istemcimde Xlib hatalarıyla çöküyor :(
Adam Hawes

totalview uygulanabilir bir alternatif gibi görünüyor. DDD'nin gdb curses arayüzünden daha iyi olduğunu düşünmüyorum.
deft_code

8

Eclipse CDT projesine göz atın. C / C ++ geliştirmeye yönelik Eclipse için bir eklentidir ve oldukça zengin bir hata ayıklama perspektifi içerir (perde arkasında GDB kullanır). Çok çeşitli platformlarda mevcuttur.




6

KDbg kullandım (sadece KDE altında çalışır).


3
KDbg, KDE ile sınırlı değildir .
nobar

Bu harika . Bunca zaman nerede olduğunu merak ediyorum.
edmz

5

Gdb için birkaç farklı guis denedim ve DDD onları daha iyi olarak bulduk. Ve linux için diğer gdb dışı teklifler hakkında yorum yapamasam da, diğer platformlarda başka hata ayıklayıcıları kullandım.

gdb istek listenizde bulunanların çoğunu yapar. DDD onlara daha güzel bir cephe koyar. Örneğin iplik geçişi daha basit hale getirilmiştir. Kesme noktalarını ayarlamak beklediğiniz kadar basittir.

Ayrıca yapmak istediğiniz belirsiz bir şey olması durumunda bir cli penceresi alırsınız.

DDD'yi kullandığım diğer hata ayıklayıcıların üzerinde öne çıkan özelliklerden biri de "grafik" veri. Bu, yapıları, nesneleri ve belleği sürüklenebilir kutular olarak görüntülemenizi ve düzenlemenizi sağlar. Bir işaretçiyi çift tıklattığınızda, kayıttan kaldırılan veriler üst öğeye görsel bağlantılarla açılır.


Ddd argümanları olan programlarda çalışır mı? Ben argümanları geçmek için alamadım ...
user3236841

Doğru hatırlarsam DDD size doğrudan GDB'ye bir konsol penceresi verebilir. GDB konsolunda "set args xyz abc" komutunu kullanarak komut satırı bağımsız değişkenlerini ayarlayabilirsiniz.
Andrew Edgecombe

5

Linux üzerinde Qt Creator, günümüzde C ++ için Visual Studio-on-Windows ile kesinlikle aynı. Hata ayıklayıcı tarafında daha iyi söyleyebilirim.


5

Bu listede eksik olan ve çok verimli olan bir IDE var (herhangi bir sorun olmadan birçok C / C ++ projesinde kullandım): Netbeans .


Şimdi alışkın olduğum için cgdb'yi çok tercih ediyorum, ancak Netbeans VS'den büyük bir basamak taşıydı.
zzxyz

3

Aşılması gereken, g ++ 'ın ürettiği hata ayıklama bilgileriyle büyük ölçüde sınırlanacaktır. Emacs, araç çubukları / menüler aracılığıyla kontrol etmenizi ve verileri ayrı pencerelerde görüntülemenizi ve doğrudan gdb komutlarını yazmanızı sağlayan gdb'ye bir arabirim sağlar. Eclipse'nin CDT'si benzer araçlar sağlar. Anjuta ve Code :: Blocks'u duydum ama hiç kullanmadım.


3

Visual Studio'yu bilen biri olarak, bunun yerine birkaç açık kaynak IDE'ye baktım ve KDevelop, Visual C ++ birisinin oturup kullanmaya başlayabileceği bir şey olmaya en yakın IMO'yu geliyor. Projeyi hata ayıklama modunda çalıştırdığınızda, gdb kullanır, ancak kdevelop hemen hemen her şeyi işler, böylece gdb olduğunu bilmek zorunda kalmazsınız; değişkenlere tek adım atıyorsunuz veya saatler ataıyorsunuz.

Ne yazık ki, Visual Studio Hata Ayıklayıcı kadar iyi değil.


3

Windows mu yoksa UNIX mi kullandığınızdan bahsetmiyorsunuz.

UNIX sistemlerinde KDevelop iyidir ancak KDbg kullanıyorum, çünkü kullanımı kolaydır ve KDevelop'da geliştirilmemiş uygulamalarla da çalışacaktır.

Tutulma her iki platformda da iyidir.

Windows'ta, Eccse CDT ve MinGW adlı Wascana Desktop Developer adlı harika bir paket var ve hepsi de minimum acı için güzelce paketlenmiş ve önceden yapılandırılmış. Windows'da GNU kodu geliştirmek için bulduğum en iyi şey.

Tüm bu hata ayıklayıcıları kullandım ve hiçbiri MS Dev Studio kadar iyi değil. Eclipse / Wascana muhtemelen en yakın olanıdır, ancak DLL'lere adım atamayacağınız gibi sınırlamaları vardır ve değişkenleri incelemede iyi bir iş yapmaz.


3

Hiç DS-5 hata ayıklayıcısına baktınız mı?

Çok sayıda yararlı özellik içeren ücretli bir sürüm var, ancak Community Edition'ı ücretsiz olarak da kullanabilirsiniz (bu da özellikle gömülü sistemler için oldukça yararlıdır).

Tutulma kullanarak gerçek cihazdaki Android uygulamalarında hata ayıklarken bu araçla olumlu bir deneyimim var.


2

Kod: Bloklar C ++ IDE VS. gücü gibi bir grafik istediğiniz özelliklerden birkaçı ile sarmalayıcı, başka bir şey yok


2

VisualGDB , linux ve gömülü platformlardaki uygulamaları geliştirmek ve hata ayıklamak için başka bir Visual Studio eklentisidir.



1

Cybwin GDB ile GDB -W'yi denediniz mi? Oldukça iyi çalışan bir Windows arabirimine sahip olduğu düşünülmektedir.

Bulduğum tek sorun, şimdiki makinemde ddd'yi yükleyene kadar bu şekilde çalışmadığıydı. Ben ddd yüklendiğinde yüklü tcltk gerektirdiğinden şüpheleniyorum.




0

Son 15 ayda içgörü kullanıyorum (FC6 ile birlikte geldi). Harika değil, Tcl / Tk ile yazılmış, ancak basit ve kullanışlı. DDD benzer kalite / faydaya sahiptir, ancak kullanımı biraz daha zordur (çeşitli GUI gotchas ve ihmalleri). Ayrıca gdb'yi IDE'm SlickEdit ile entegre etmeye çalıştım. Tamam çalıştı (onunla 4 saat oynadım), ama GUI bağlam anahtarlarını sevmedim. Ben hata ayıklama sırasında IDE değişmeden kalmak istiyorum; Windows'da IDE için SlickEdit ve hata ayıklama için Visual Studio Debugger kullanıyorum. Yani 3: Insight, DDD ve SlickEdit, Insight benim 1. seçimim, zamanın>% 95'ini kullanıyorum, komut satırı gdb ve DDD diğer% 5'i oluşturuyor. Eğer şansım olursa, Eclipse'i bir noktada değerlendireceğim, çalışma bilgisayarım Eclipse'i makul şekilde çalıştırmak için yeterli RAM'e sahip değil (sadece 1GB).

Bir iş görüşmesi sırasında 1. el de dahil olmak üzere TotalView için çok övgü duydum. 2008 yılı sonunda şirketimiz için bir değerlendirme aldım, ancak sonunda gdb ihtiyaçlarımız için yeterince iyi olduğu için ilerlemedik; ve özgür ve her yerde bulunur.


0

Www.zero-bugs.com/ Zero debugger kullanın, gcc'den C ++ 0x desteği gerektirir


1
www.zero-bugs.com/ web sitesi çalışmıyor
vharron

0

Çalışan bir programda adım atmak için bir hata ayıklayıcı arıyordum. De ki: Ekle. Program tutulma ile oluşturuldu, ancak belki bazı çok iş parçacıklı engeller nedeniyle düşkün olduğu kaynak dosyaları yok. Her neyse.

NetBeans ile çok rahatladım.

  • [hata ayıklama] menüsünden -> Hata Ayıklayıcı Ekle ...
  • süreç hata ayıklamak için birini seçtiğinden
  • proje olarak [yeni proje]

Şimdi pencere düşüyor ve hiçbir şey görmüyorsunuz. süreçten ayrılmak. Okuma Meydanı "Dur" yardımcı olur.

  • projeden kaynak klasör gibi içe aktarın. " ... / MyProject / src
  • Şimdi projenizde görünür ve kesme noktaları ayarlayabilirsiniz.
  • hata ayıklayıcıyı tekrar ttach
  • hata ayıklama işlemini seçti.
  • program bir sonraki kesme noktasına ulaşırsa hata ayıklayıcı durmalıdır.

[Window] -> [Debugging] -> Pencereniz rahat edecek mi?

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.