Apakah ada GUI C ++ gdb untuk Linux? [Tutup]


210

Secara singkat: Apakah ada yang tahu tentang GUI untuk gdb yang membuatnya setara atau dekat dengan fitur yang Anda dapatkan di versi terbaru dari Visual C ++?

Secara terperinci: Sebagai seseorang yang telah menghabiskan banyak waktu pemrograman di Windows, salah satu kendala terbesar yang saya temukan setiap kali saya harus kode C ++ di Linux adalah bahwa men-debug apa pun menggunakan commandline gdb membutuhkan waktu beberapa kali lebih lama daripada di Visual Studio, dan sepertinya tidak menjadi lebih baik dengan latihan. Beberapa hal hanya lebih mudah atau lebih cepat untuk diekspresikan secara grafis.

Secara khusus, saya mencari GUI yang:

  • Menangani semua dasar-dasar seperti melangkah masuk & ke dalam kode, menonton variabel dan breakpoint
  • Memahami dan dapat menampilkan konten tipe data C ++ yang kompleks & bersarang
  • Tidak menjadi bingung oleh dan lebih disukai dapat secara cerdas melangkah melalui kode templated dan struktur data sambil menampilkan informasi yang relevan seperti jenis parameter
  • Dapat menangani aplikasi berulir dan beralih di antara berbagai utas untuk melangkah atau melihat status
  • Dapat menangani melampirkan ke proses yang sudah dimulai atau membaca dump inti, selain memulai program di gdb

Jika program semacam itu tidak ada, maka saya ingin mendengar tentang pengalaman orang-orang dengan program yang memenuhi setidaknya beberapa poin. Adakah yang punya rekomendasi?

Sunting:
Mendaftar kemungkinan sangat bagus, dan saya akan mengambil apa yang bisa saya dapatkan, tetapi akan lebih membantu jika Anda dapat memasukkan dalam tanggapan Anda:
(a) Apakah Anda benar-benar menggunakan GUI ini dan jika demikian, , apa umpan balik positif / negatif yang Anda miliki tentang hal itu.
(B) Jika Anda tahu, mana dari fitur yang disebutkan di atas adalah / tidak didukung

Daftarnya mudah didapat, situs-situs seperti ini hebat karena Anda bisa mendapatkan gambaran tentang pengalaman pribadi orang-orang dengan aplikasi.


21
+1 untuk "Situs seperti ini luar biasa karena Anda bisa mendapatkan gambaran tentang pengalaman pribadi orang lain." Terlalu banyak orang saat ini hanya melakukan dump daftar yang IMHO benar-benar melenceng.
kizzx2



Lihat daftar ujung depan gdb di sini: sourceware.org/gdb/wiki/GDB%20Front%20Ends , dan berikan tembakan pertama pada daftar. Terlihat sangat menjanjikan dan modern dan bersifat lintas platform karena berbasis browser: gdbgui.com .
Gabriel Staples

Jawaban:


55

Anda tidak akan menemukan apa pun overlay GDB yang dapat bersaing dengan kekuatan mentah dari debugger Visual Studio. Itu terlalu kuat, dan terlalu terintegrasi dengan baik di dalam IDE.

Untuk alternatif Linux, coba DDD jika perangkat lunak bebas sesuai keinginan Anda.


2
WinDBG jauh lebih unggul dari apa yang disediakan Visual Studio. Visual studio debugger berada di atas arsitektur yang sama dari WinDBG. Dengan itu, GDB tidak perlu bertanya ketika membandingkannya dengan Windbg. Debugger grafis yang lebih baik dari DDD akan lebih bagus. Eclipse CDT adalah alternatif yang baik. Saya pikir ada UI KDE
bigmonachus

114
Oh lihat. Sebuah jawaban yang membuat klaim tanpa mendukungnya sama sekali. Saya juga merasa aneh bahwa jawaban yang tidak menjawab pertanyaan itu diterima.
alternatif

3
bagi siapa pun yang datang ke sini mencari jawaban nyata, ketahuilah bahwa DDD adalah sampah. GUI debugger terbaik untuk Linux yang saya temukan adalah IDA, yang bukan perangkat lunak gratis.
bkconrad

1
Jawab pertanyaan sebaik mungkin atau jangan katakan apa pun. Setelah menggunakan keduanya, Visual Studio lebih banyak diisi fitur, tetapi DDD cukup baik sehingga saya tidak ketinggalan VS. Sayangnya, DDD menunjukkan umurnya.
Alan De Smet

6
Posting ini perlu diperbarui / ditingkatkan. Qt Creator mengagumkan, setara dengan Visual Studio.
vharron

85

Eclipse CDT akan memberikan pengalaman yang sebanding dengan menggunakan Visual Studio. Saya menggunakan Eclipse CDT setiap hari untuk menulis kode dan men-debug proses lokal dan jarak jauh.

Jika Anda tidak terbiasa menggunakan IDE berbasis Eclipse, GUI akan membutuhkan waktu untuk membiasakan diri. Namun, begitu Anda memahami ide-ide GUI yang unik untuk Eclipse (misalnya perspektif), menggunakan alat menjadi pengalaman yang menyenangkan.

Perkakas CDT menyediakan pengindeks C / C ++ yang layak yang memungkinkan Anda untuk dengan cepat menemukan referensi ke metode dalam basis kode Anda. Ini juga menyediakan alat ekspansi makro yang bagus dan dukungan refactoring terbatas.

Sehubungan dengan dukungan untuk debugging, CDT dapat melakukan semua yang ada di daftar Anda dengan pengecualian membaca dump inti (mungkin mendukung ini, tetapi saya belum pernah mencoba menggunakan fitur ini). Juga, pengalaman saya dengan kode debug menggunakan template terbatas, jadi saya tidak yakin pengalaman apa yang akan diberikan CDT dalam hal ini.

Untuk informasi lebih lanjut tentang debugging menggunakan Eclipse CDT, Anda mungkin ingin memeriksa panduan ini:


10
Membaca dump inti didukung. (Ini disebut sebagai Debugger Postmortem.)
Josh Kelley

Saya memiliki pengalaman yang lebih baik dalam debugging Eclipse CDT daripada di Visual Studios. Saya belum memberi MSVC kesempatan terlalu banyak.
notlesh

3
Saya pikir itu QtCreator harus disebutkan bersama Eclipse karena dapat dibandingkan.
nonsensickle

78

gdb -tui berfungsi baik jika Anda menginginkan sesuatu GUI-ish, tetapi masih berbasis karakter.


45
Anda juga dapat masuk ke mode TUI (antarmuka pengguna teks) saat dalam gdb dengan menggunakan perintah '-'. Kembali ke prompt perintah adalah Ctrl-X Ctrl-A. Saat dalam mode TUI, atas, bawah, kiri, dan kanan bergerak melalui sumber. Gunakan Ctrl-P, Ctrl-N, Ctrl-F, dan Ctrl-B untuk menavigasi dalam sejarah baris perintah.
Ben Combee

Ini persis apa yang saya cari. Kekuatan baris perintah gdb dengan beberapa tampilan berguna yang diperbarui saat saya bergerak.
Kevin Cox

7
Gdbinit di steriods memberi Anda GUI berbasis karakter yang sangat mengesankan, dengan warna: github.com/cyrus-and/gdb-dashboard
cs01

Saya cukup suka gdb-dashboard tetapi harus menyebutkan voltron juga.
nonsensickle

3
@Barry terima kasih. Bagi siapa pun yang penasaran, berikut ini tautannya: github.com/cs01/gdbgui . Ini memiliki tampilan struktur data yang mirip dengan DDD, arsitektur klien / server untuk dengan mudah men-debug mesin jarak jauh tanpa perlu penerusan X, dan kemampuan untuk mengeksplorasi variabel kompleks, dll.
cs01

47

Lihat Nemiver C / C ++ Debugger . Mudah untuk menginstal di Ubuntu (Developer Tools / Debugging).

Perbarui: Tautan baru.


Benar-benar luar biasa , juga didukung dengan apt: 'apt-get install nemiver'. Quibble saya satu-satunya adalah membangun dari repo gagal karena 'Tidak ada paket gconf-2.0 ditemukan'.
J Evans

antarmuka cukup jelas dan bagus untuk dibaca, tetapi kadang-kadang crash saat menggunakan kemampuan antarmuka v0.9.6. Ia juga menerima parameter aplikasi yang di-debug, apa yang saya masih tidak bisa lakukan ddd.
Aquarius Power

Juga tersedia di Fedora 30 (setidaknya). Saya baru saja berkesempatan menjawab pertanyaan dan nemiver ini.
user3236841

31

Qt Creator sepertinya barang bagus. Seorang kolega menunjukkan kepada saya satu cara mengaturnya untuk debugging:

  • Buat proyek baru, "Impor Proyek Berbasis Makefile".
  • Arahkan ke folder proyek root Anda (itu akan mengindeks sumber di bawahnya, dan itu sangat cepat).
  • Buka pengaturan proyek dan tambahkan konfigurasi jalankan, kemudian tentukan yang dapat dieksekusi yang ingin Anda debug, dan argumennya.
  • Qt Creator tampaknya bersikeras membangun proyek Anda sebelum men-debug-nya. Jika Anda tidak menginginkannya, atau jangan gunakan make, buka saja proyek -> build (panel kiri), lalu, di panel kanan di "Build Steps", hapus semua langkah, termasuk langkah secara default saat Anda membuat proyek.

Itu mungkin tampak seperti banyak pekerjaan untuk men-debug aplikasi yang sudah saya susun, tetapi itu sepadan. Debugger menunjukkan thread, tumpukan dan variabel lokal dengan cara yang mirip dengan Visual Studio dan bahkan menggunakan banyak cara pintas keyboard yang sama. Tampaknya menangani template dengan baik, setidaknya std :: string dan std :: map. Melampirkan ke proses yang ada dan dump inti tampaknya didukung, meskipun saya belum mengujinya.

Ingatlah bahwa saya menggunakannya kurang dari satu jam sekarang, tetapi saya terkesan sejauh ini.


29

Saya benci ide pengembangan Windows, tetapi VC ++ debugger adalah yang terbaik yang pernah saya lihat. Saya belum menemukan ujung depan GUI yang mendekati VC.

GDB luar biasa begitu Anda benar-benar terbiasa. Gunakan itu dalam amarah yang cukup dan Anda akan menjadi sangat mahir. Saya dapat berkeliling program melakukan semua hal yang Anda daftarkan tanpa banyak usaha lagi. Memang butuh sebulan atau lebih menderita melalui tautan SSH ke server jauh sebelum saya mahir. Saya tidak akan pernah kembali lagi.

DDD benar-benar kuat tetapi cukup buggy. Saya menemukan itu cukup sering membeku ketika mendapat pesan dari GDB bahwa itu tidak grok. Ini bagus karena memiliki jendela antarmuka gdb sehingga Anda dapat melihat apa yang terjadi dan juga berinteraksi dengan gdb secara langsung. DDD tidak dapat digunakan pada sesi X jarak jauh di lingkungan saya (masalah nyata, karena saya duduk di klien tipis ketika saya melakukan Unix dev) untuk beberapa alasan jadi itu keluar untuk saya.

KDevelop mengikuti gaya khas KDE dan mengekspos SEMUANYA kepada pengguna. Saya juga tidak pernah beruntung men-debug program non KDevelop di KDevelop.

Gnat Programming Studio (GPS) sebenarnya merupakan front-end yang bagus untuk GDB. Itu tidak hanya mengelola proyek Ada, jadi ada baiknya mencoba jika Anda membutuhkan debugger.

Anda dapat menggunakan Eclipse, tetapi ini cukup berat dan banyak orang Unix berpengalaman yang pernah bekerja sama dengan saya (termasuk saya) tidak terlalu peduli dengan antarmuka, yang tidak hanya STFU dan keluar dari jalan Anda. Eclipse juga tampaknya mengambil banyak ruang dan berlari seperti anjing.


2
Hanya ingin memasang proyek saya, gdbgui ( github.com/cs01/gdbgui ). Ini adalah arsitektur klien / server, jadi berfungsi dengan baik men-debug mesin jarak jauh tanpa sesi X diperlukan. Ia juga memiliki terminal untuk berinteraksi langsung dengan GDB, dan memiliki visual untuk menampilkan struktur data, mirip dengan DDD.
cs01

Perbandingan dengan pro dan kontra berdasarkan pengalaman. Hanya apa yang dibutuhkan pertanyaan ini. ty
Heath Raftery


16

Saya menggunakan banyak DDD, dan itu sangat kuat setelah Anda belajar menggunakannya. Satu hal yang akan saya katakan adalah jangan menggunakannya lebih dari X di atas WAN karena tampaknya melakukan banyak pembaruan layar yang tidak perlu.

Juga, jika Anda tidak dikawinkan dengan GDB dan tidak keberatan menyuap sedikit uang, maka saya akan mencoba TotalView. Ini memiliki sedikit kurva pembelajaran yang curam (itu pasti bisa lebih intuitif), tapi itu adalah debugger C ++ terbaik yang pernah saya gunakan pada platform apa pun dan dapat diperluas untuk mengintrospeksi objek Anda dengan cara kustom (sehingga memungkinkan Anda untuk melihat Daftar STL sebagai daftar objek aktual, dan bukan sekelompok anggota data internal yang membingungkan, dll.)


Saya tidak bisa membuat DDD bekerja pada remote X sama sekali; baru saja crash dengan kesalahan Xlib pada thin client saya :(
Adam Hawes

totalview terlihat seperti alternatif yang layak. Saya tidak menganggap DDD lebih baik dari antarmuka kutukan gdb.
deft_code

8

Lihatlah proyek Eclipse CDT. Ini adalah plugin untuk Eclipse yang ditujukan untuk pengembangan C / C ++ dan termasuk perspektif debugging kaya fitur yang cukup (yang di belakang layar menggunakan GDB). Ini tersedia di berbagai platform.




6

Saya menggunakan KDbg (hanya berfungsi di bawah KDE).


3
KDbg tidak terbatas pada KDE.
Nobar

Itu luar biasa . Aku ingin tahu di mana saja selama ini.
edmz

5

Saya sudah mencoba beberapa guis berbeda untuk gdb dan telah menemukan DDD menjadi lebih baik dari mereka. Dan sementara saya tidak bisa mengomentari yang lain, penawaran non-gdb untuk linux saya telah menggunakan sejumlah debugger lain pada platform lain.

gdb melakukan sebagian besar hal yang Anda miliki di daftar keinginan Anda. DDD menempatkan yang lebih baik di depan mereka. Misalnya penggantian ulir dibuat lebih sederhana. Pengaturan breakpoints adalah sesederhana yang Anda harapkan.

Anda juga mendapatkan jendela klik jika ada sesuatu yang tidak jelas yang ingin Anda lakukan.

Satu fitur dari DDD yang menonjol di atas debugger lain yang telah saya gunakan adalah data "grafik". Ini memungkinkan Anda untuk menampilkan dan mengatur struktur, objek, dan memori sebagai kotak yang dapat diseret. Mengklik dua kali pointer akan membuka data yang direferensikan dengan tautan visual kembali ke induknya.


Apakah ddd bekerja pada program dengan argumen? Saya tidak bisa menyelesaikannya dengan argumen ...
user3236841

Jika saya ingat dengan benar, DDD dapat memberi Anda jendela konsol langsung ke GDB. Di konsol GDB Anda dapat mengatur argumen baris perintah menggunakan perintah "set args xyz abc".
Andrew Edgecombe

5

Qt Creator-on-Linux tentu saja setara dengan Visual Studio-on-Windows untuk C ++ saat ini. Saya bahkan akan mengatakan lebih baik di sisi debugger.


5

Ada satu IDE yang hilang dalam daftar ini dan yang sangat efisien (Saya telah menggunakannya di banyak proyek C / C ++ tanpa masalah): Netbeans .


Saya jauh lebih suka cgdb sekarang karena saya sudah terbiasa, tapi Netbeans adalah batu loncatan yang hebat dari VS.
zzxyz

3

Apa yang dapat dilangkahi akan dibatasi oleh informasi debug yang dihasilkan oleh g ++, sebagian besar. Emacs menyediakan antarmuka ke gdb yang memungkinkan Anda mengontrolnya melalui bilah alat / menu dan menampilkan data dalam jendela terpisah, serta mengetik perintah gdb secara langsung. Eclipse's CDT menyediakan alat serupa. Saya pernah mendengar tentang Anjuta dan Code :: Blocks tetapi tidak pernah menggunakannya.


3

Sebagai seseorang yang akrab dengan Visual Studio, saya telah melihat beberapa IDE open source untuk menggantinya, dan KDevelop datang IMO terdekat untuk menjadi sesuatu yang orang Visual C ++ dapat duduk dan mulai menggunakan. Ketika Anda menjalankan proyek dalam mode debugging, ia menggunakan gdb tetapi kdevelop menangani semuanya sehingga Anda tidak perlu tahu itu gdb; Anda hanya loncatan tunggal atau menugaskan jam tangan ke variabel.

Sayangnya, itu masih tidak sebagus Visual Studio Debugger.


3

Anda tidak menyebutkan apakah Anda menggunakan Windows atau UNIX.

Pada sistem UNIX, KDevelop bagus tetapi saya menggunakan KDbg karena mudah digunakan dan juga akan bekerja dengan aplikasi yang tidak dikembangkan di KDevelop.

Gerhana bagus di kedua platform.

Di Windows, ada paket hebat bernama Wascana Desktop Developer yang Eclipse CDT dan MinGW semuanya dikemas dan dikonfigurasikan dengan baik untuk meminimalkan rasa sakit. Ini hal terbaik yang saya temukan untuk mengembangkan kode GNU di Windows.

Saya telah menggunakan semua debugger ini dan tidak ada yang sebagus MS Dev Studio. Eclipse / Wascana mungkin yang paling dekat tetapi memiliki keterbatasan seperti Anda tidak dapat melangkah ke DLL dan itu tidak melakukan pekerjaan yang baik untuk memeriksa variabel.


3

Apakah Anda pernah melihat debugger DS-5 ?

Ada versi berbayar yang mencakup banyak fitur bermanfaat, tetapi Anda juga dapat menggunakan Edisi Komunitas secara gratis (yang juga cukup berguna terutama untuk sistem tertanam).

Saya memiliki pengalaman positif dengan alat ini ketika men-debug aplikasi Android di perangkat nyata menggunakan gerhana.


2

The Code: Blok C ++ IDE memiliki bungkus grafis, dengan beberapa fitur yang Anda inginkan, tapi tidak seperti kekuatan VS.




1

Sudahkah Anda mencoba gdb -w dengan cygwin gdb. Ini dianggap memiliki antarmuka windows yang bekerja dengan cukup baik.

Satu-satunya masalah yang saya temukan adalah bahwa pada mesin saya sekarang ini tidak berjalan seperti itu sampai setelah saya menginstal ddd. Saya menduga bahwa ini memerlukan tcltk yang diinstal ketika saya menginstal ddd.




0

Dalam 15 bulan terakhir saya menggunakan wawasan (datang dengan FC6). Ini tidak bagus, ditulis dalam Tcl / Tk, tetapi sederhana dan bermanfaat. DDD memiliki kualitas / utilitas yang serupa, tetapi agak sulit digunakan (berbagai gangguan dan kelalaian GUI). Saya juga mencoba mengintegrasikan gdb dengan IDE saya, SlickEdit. Itu bekerja OK (saya bermain sekitar 4 jam dengan itu), tapi saya tidak suka saklar konteks GUI. Saya suka IDE saya untuk tetap tidak berubah saat saya sedang debugging; pada Windows saya menggunakan SlickEdit untuk IDE dan Visual Studio Debugger untuk debugging. Jadi dari 3: Insight, DDD dan SlickEdit, Insight adalah pilihan pertama saya, saya menggunakannya> 95% dari waktu, baris perintah gdb dan DDD membentuk 5% lainnya. Jika saya mendapatkan kesempatan, saya akan mengevaluasi Eclipse di beberapa titik, PC pekerjaan saya sepertinya tidak memiliki cukup RAM (1GB saja) untuk menjalankan Eclipse dengan cukup baik.

Saya juga telah mendengar banyak pujian untuk TotalView, termasuk tangan pertama saat wawancara kerja. Saya memperoleh eval untuk perusahaan kami pada akhir 2008, tetapi pada akhirnya kami tidak melanjutkan karena gdb cukup baik untuk kebutuhan kami; dan gratis dan ada di mana-mana.


0

Gunakan www.zero-bugs.com/ Zero debugger, membutuhkan dukungan C ++ 0x dari gcc


1
www.zero-bugs.com/ situs web rusak
vharron

0

Saya sedang mencari debugger untuk melangkah melalui program yang sedang berjalan. Katakan: Lampirkan. Programnya dibangun dengan gerhana, tetapi karena mungkin beberapa penghalang multithreadding, tidak ada sourcefile mana suka. Masa bodo.

Saya menjadi sangat nyaman dengan NetBeans.

  • [debug] dari menu -> Lampirkan Deugger ...
  • sebagai proses memilih yang akan di-debug
  • sebagai proyek [proyek baru]

Sekarang jendela menghilang dan Anda tidak melihat apa pun. lepaskan dari proses. Kotak Baca "Stop" membantu.

  • impor sumber dari proyek sebagai folder misalnya. "... / Proyek Saya / src
  • Sekarang muncul di proyek Anda, dan Anda dapat mengatur breakpoints.
  • lagi ttach debugger
  • memilih proses untuk debug.
  • debugger harus berhenti jika program mencapai breakpoint berikutnya.

Pergi ke [window] -> [Debugging] -> Akankah window Anda membuat compfortable.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.