Pertanyaannya adalah untuk Anda semua orang, yang menggunakan Vim untuk mengembangkan aplikasi C ++.
Ada suatu masa dalam hidup saya, yang dapat digambarkan sebagai 'Saya benci Vim !!!' .. 'Vim baik!'
Namun, setelah tumbuh sebagian besar di IDE pengembangan Microsoft, saya terbiasa dengan itu F5- F11pintasan ketika men-debug kode, menonton jendela, tumpukan panggilan dan kode utama - semua terlihat tanpa perlu mengetikkan perintah GDB.
Jadi, inilah pertanyaannya:
Apakah Anda menggunakan Vim juga untuk debugging? Atau apakah Anda beralih ke beberapa IDE untuk tujuan ini? Yang mana?
Bagi mereka yang menggunakan kode Vim untuk men-debug: apakah ada plugin untuk mengatur breakpoints di editor, sorot baris yang saat ini sedang kami debug, navigasi otomatis selama langkah, langkah masuk, langkah keluar?
Tolong, jangan bilang Anda menggunakan GDB sebagai baris perintah, lihat hanya satu baris yang di-debug, dll.
gdb -tui
.Jawaban:
Berbeda dengan jawaban lain, setidaknya ada tiga opsi yang melakukan apa yang Anda butuhkan: clewn , pyclewn , dan vimgdb .
Ketiga proyek terkait. vimgdb adalah patch terhadap Vim dan membutuhkan Vim untuk dikompilasi ulang. clewn adalah program mandiri yang berkomunikasi dengan Vim melalui antarmuka soket Netbeans. Ini membutuhkan Vim untuk dibangun dengan
+netbeans
opsi (ini adalah kasus di distribusi Linux baru-baru ini sehingga seharusnya tidak menjadi masalah).Mengutip dari situs web clewn:
Saya pikir Anda harus mencobanya.
Beranda situs web pyclewn menunjukkan perbandingan antara ketiga proyek.
Beberapa bulan yang lalu saya mencoba pyclewn. Agak sulit untuk diatur, tapi terlihat bagus dan menjanjikan. Saya baru saja melakukan beberapa tes dan Anda dapat mengatur bookmark, dll., Hal-hal yang biasa Anda harapkan dari debugger grafis. Saya akhirnya tidak menggunakannya untuk alasan kontingen tetapi saya ingin mencobanya lagi.
sumber
Vim menambahkan built-in debugger secara resmi di versi 8.1, dirilis pada Mei 2018. Fitur ini telah hadir di beberapa rilis versi 8.0 juga, pada awal Agustus 2017.
Perintah vim berikut memuat plugin dan memulai debugger.
Perintah terakhir mengambil program sebagai argumen opsional, atau sebagai alternatif program dapat dimuat dari
gdb
jendela denganfile
perintah.Dengan plugin dimuat,
gdb
dapat digunakan secara interaktif di jendela yang sesuai. Misalnya, breakpoints dapat diatur, kode dapat dilewati, dan variabel dapat diperiksa.Perintah Vim dapat dikeluarkan untuk berinteraksi dengan
gdb
. Beberapa perintah yang relevan meliputi:Step
,:Over
,:Finish
,:Continue
,:Stop
,:Break
,:Clear
, dan:Evaluate
.Selain itu, ada tombol yang dapat diklik di bagian atas jendela editor untuk berinteraksi
gdb
.Jendela editor diperbarui untuk mencerminkan keadaan debugging. Breakpoint ditunjukkan dengan
>>
dan garis saat ini disorot.Halaman bantuan built-in termasuk dokumentasi menyeluruh.
Baru-baru ini saya menulis posting blog yang membahas contoh sesi.
https://www.dannyadam.com/blog/2019/05/debugging-in-vim/
sumber
Vim adalah editor yang bagus, tetapi untuk melakukan debugging saya menggunakan debugger (seperti GDB).
Tetapi Anda tidak harus menggunakan GDB dalam mode teks; Anda dapat menggunakan antarmuka grafis seperti KDbg , DDD atau Insight .
Ada beberapa cara untuk memasukkan GDB ke Vim (tetapi kemudian Anda mendapatkan debugging berbasis teks).
sumber
edit
Perintah GDBBuka editor di baris saat ini menggunakan perintah:
Standarnya
editor
adalahex
, tetapivim
juga memahami+<current-line>
formatnya.Ketika Anda keluar dari editor, Anda kembali ke
gdb
.Ini memungkinkan Anda untuk menelusuri sumber secara bebas dan sangat kuat jika Anda memiliki
ctags
integrasi.Ini adalah built-in one way gdb to vim integrasi orang miskin: hal utama yang hilang adalah pengaturan breakpoints dari Vim.
edit
dan pusatedit
tidak memusatkan Vim secara default di sekitar sumber, jadi saya telah membuat skrip Python yang melakukannya: Bagaimana cara membuka file saat ini di baris saat ini dalam editor teks dari GDB?Perintah breakpoint untuk bantuan clipboard
Perintah vim ini menyalin penentu breakpoint tipe:
ke clipboard:
Maka Anda bisa menempelkannya ke
gdb
.Ini adalah vim orang miskin untuk integrasi gdb untuk memudahkan pengaturan breakpoints.
Dasbor GDB
https://github.com/cyrus-and/gdb-dashboard
Ini tidak ada hubungannya dengan Vim, tetapi ini adalah solusi ringan yang mencapai banyak dan mungkin cocok dengan Vimmers lain di luar sana.
Yang lain telah menyebutkan GDB TUI, tetapi saya merasa terlalu rusak dan tidak cukup kuat untuk bisa ditanggung.
Jadi saya pindah ke solusi berbasis API Python seperti GDB Dashboard.
Saya telah menjelaskan digunakan dan alasan lebih terinci di: gdb tampilan split dengan kode
Berikut ini screenshot dari apa yang diberikannya kepada Anda:
Lihat juga: /vi/2046/how-can-i-integrate-gdb-with-vim
Menyerahlah dan gunakan IDE nyata
Dengan semua yang dikatakan, ini adalah solusi terbaik bagi kebanyakan orang, termasuk saya. Kebanyakan orang hanya akan mendapatkan banyak waktu jika mereka dapat melompati definisi dengan cara sadar kelas C ++ tanpa memilih dan menginstal beberapa plugin yang berbeda, dan itu termasuk saat langkah debugging barang. Pada tahun 2020, yang terburuk bagi saya adalah Eclipse: https://www.slant.co/topics/1411/~best-ides-for-c-on-linux
sumber
Menggunakan debugger tingkat sumber hanyalah salah satu dari banyak cara untuk mendiagnosis perilaku program yang salah, dan saya jarang menemukan diri saya meluncurkannya - meskipun faktanya sangat mudah dilakukan.
Jadi bagi saya, tidak ada keuntungan inheren untuk menggunakan editor teks yang kebetulan juga menjadi debugger . Sebagai gantinya, saya menggunakan editor teks yang saya sukai - terlepas dari debugger apa yang saya pilih untuk digunakan. Saat ini, saya lebih banyak menggunakan gedit dan kdbg untuk tujuan ini, tetapi pilihan ini berkembang secara independen dari waktu ke waktu.
sumber
Pembaruan 2020: Ada vimspector plugin baru menggunakan Debug Adapter Protocol
Instal plugin https://github.com/puremourning/vimspector#installation
Konfigurasikan (tulis
.vimspector.json
)Kompilasi dengan simbol debug
g++ cpp.cpp -ggdb -o cpp
Tekan
F4
untuk memulai debug.vimspector.json
di direktori rumah saya (jadi kerjakan di subdirektori apa pun)sumber
Setelah baru-baru ini bekerja pada aplikasi untuk waktu yang lama yang membutuhkan banyak hal untuk ditempatkan pada kotak yang sedang berjalan (alat mengatur), saya menulis kode dalam vim, memiliki skrip yang membangun otomatis, mendorongnya ke server , yang memiliki skrip di sana untuk memperhatikan file sentinel didorong bersama dengan binari. Ini kemudian akan me-restart layanan yang sesuai pada kotak, dan di jendela ssh lain saya
tail -f
menjalankan file log saya.Singkatnya, saya tidak menggunakan debugger sama sekali. Jika saya memiliki sesuatu yang mati secara tak terduga, saya hanya akan menaikkan level logging, mengulanginya, dan melihat apa hal terakhir yang dicatat sebelum mati, kemudian menganalisisnya dan memperbaiki masalah tersebut.
Yang menyenangkan adalah ketika ada masalah di lingkungan pelanggan, saya hanya akan meminta log tingkat Debug dan bisa mengidentifikasi masalah tanpa perlu akses ke server mereka.
... tapi ya, ada saat-saat ketika akan menyenangkan memiliki debugger.
sumber
Tambahkan saja di atas:
IMO vim cenderung menjadi editor yang ringan dan debugging cenderung menambah bobot. Ada cara untuk melakukannya yaitu menggunakan vim7.4 + dengan
dan menjalankan salah satu dari debuggers commandline (kutukan) berikut. Beberapa digunakan secara default untuk IDE yang Anda tidak pernah tahu. yaitu lldb = xcode.
jelas ada lebih banyak berbasis cli; @semua merasa bebas untuk menyarankan dan menambahkan ke daftar. Terima kasih!
sumber