Linux Fu: Tingkatkan Game GDB Anda!

Jika Anda ingin membeli mobil, ada banyak pilihan. Kalau mau beli jetliner, pilihannya lebih sedikit. Jika Anda ingin menggunakan Large Hadron Collider, Anda memiliki pilihan tepat satu. Semakin sulit sesuatu untuk dibuat, semakin kecil kemungkinan ada banyak dari mereka. Jika Anda mencari debugger Linux, hanya ada beberapa pilihan, tetapi gdb adalah yang paling sering Anda temukan. Ada lldb dan beberapa penawaran komersial non-terbuka, tetapi sebagian besar Anda akan menggunakan gdb untuk men-debug perangkat lunak di Linux.

Tentu saja, tidak semua orang menyukai antarmuka berbasis teks gdb, jadi tidak ada kekurangan dari ujung depan yang tersedia untuk itu. Faktanya, gdb memiliki dua antarmuka bawaan yang berpotensi meskipun tergantung pada cara Anda menginstal gdb, Anda mungkin tidak memiliki keduanya. Tentu saja, jika Anda menggunakan IDE, kemungkinan besar itu adalah ujung depan untuk gdb antara lain. Tetapi intinya adalah gdb dan — biasanya — ada jendela di suatu tempat di mana Anda dapat memasukkan perintah gdb. Bahkan emacs — yang mungkin dianggap sebagai IDE asli — dapat menjalankan gdb dan memberi Anda semacam pengalaman GUI.

Tidak Diperlukan Ujung Depan

Ada suatu masa ketika Wawasan sedang populer. Ini bukan ujung depan untuk gdb. Itu adalah salinan sebenarnya dari gdb dengan GUI Tk/Tcl yang terpasang di dalamnya. Namun, itu tidak disukai, karena masalah pengemasan, sesuatu yang diliput oleh teman lama saya Jeff Duntemann saat semua orang menjatuhkannya.

Namun, masih ada cara untuk menggunakan gdb sedikit lebih baik tanpa front end. Bendera -tui. Ini memberi Anda bukan antarmuka pengguna grafis, tetapi antarmuka pengguna tekstual seperti yang dapat Anda lihat di bawah.

Mode gdb TUI memungkinkan Anda melihat lebih banyak data pada satu waktu tetapi masih menyisakan sesuatu yang diinginkan

Meskipun saya tidak selalu menjadi penggemar GUI, debugging adalah satu tempat di mana masuk akal untuk memiliki banyak informasi di layar sekaligus, jadi ini adalah satu tempat saya akan sering mencoba menggunakan sesuatu yang sedikit lebih bagus daripada perintah kosong garis. Tampilan default hanya menampilkan kode sumber dan jendela perintah, tetapi Anda juga dapat mengaktifkan tampilan register, mengaktifkan tampilan pembongkaran, dan mengubah tata letak semuanya. Coba perintah “layout split” atau “layout regs” untuk melihat beberapa tampilan yang berbeda. Perintah “layout src” akan mengembalikan semuanya ke awal. Jika Anda ingin serius menggunakan mode TUI, lihat dokumentasinya. Perlu dicatat bahwa Anda dapat menggunakan “tui enable” untuk mengaktifkan mode ini kapan saja dan “tui nonaktifkan” untuk mematikannya dan kembali ke gdb biasa.

Mengapa Bukan Web?

Saat ini, semuanya berjalan di browser web jadi mengapa tidak debugger Anda? Ujung depan gdbgui melakukan hal itu. Tentu saja, debugger tidak berjalan di browser, hanya antarmuka pengguna yang terhubung ke server lokal. Anda dapat melihat program berjalan melawan ARM yang dapat dieksekusi menggunakan gdb-multiarch pada gambar terlampir.

Antarmuka gdbgui berjalan di browser

Semua ujung depan, tentu saja, mencari executable gdb normal. Tetapi jika Anda men-debug sesuatu dari jarak jauh seperti chip AVR atau ARM, Anda harus menemukan cara untuk menunjuk ke program gdb yang benar. Untuk gdbgui, itulah opsi -g pada baris perintah. Tidak jelas apakah ada cara untuk terhubung ke server (OpenOCD, dalam hal ini) menggunakan protokol jarak jauh yang diperluas. Secara default, setidaknya menggunakan protokol jarak jauh standar yang kurang mampu.

Pilihan serupa lainnya yang menjalankan antarmuka di browser adalah gdbfrontend. Ini juga membutuhkan opsi -g atau –gdb-executable untuk menetapkan pilihan berbeda dari program gdb yang mendasarinya. Anda dapat melihat tampilannya di bawah ini.

Program gdbfrontend memiliki banyak tema yang penuh warna (dan terkadang mengganggu)

Seperti gdbgui, sepertinya tidak ada cara untuk mengonfigurasi ujung depan untuk menggunakan protokol jarak jauh yang diperluas, yang menyebabkan beberapa batasan saat men-debug dengan OpenOCD. Salah satu fitur yang menarik adalah tombol kolaborasi yang memungkinkan Anda menggambar di layar, mungkin saat berbagi layar dengan seseorang atau memproyeksikan layar Anda untuk ruang kelas.

Pilihan Lainnya

Pilihan bagus lainnya adalah Seer yang tidak berjalan di browser. Perhatikan bahwa ini tidak sama dengan paket seer di Ubuntu, sayangnya. Untuk melihat, Anda harus keluar dari dialog pertama yang muncul dan menuju ke Pengaturan untuk mengubah gdb yang dapat dieksekusi. Namun, saya mengalami masalah dalam menyetel breakpoints di GUI. Sepertinya breakpoints akan berfungsi jika Anda menggunakan terminal gdb, tetapi hal itu mengalahkan tujuannya. Itu memang terlihat memiliki “array visualizer” yang menarik jika Anda bisa membuatnya berfungsi. Saya memilih bidikan pelihat men-debug program Linux yang sangat sederhana dan itu berhasil dengan baik.

Pelihat men-debug executable Linux

Saya menduga bahwa semua program ini berfungsi dengan baik menggunakan gdb normal pada file ELF Linux biasa. Semua masalah tidak diragukan lagi karena saya menggunakan OpenOCD sebagai gdbserver dan berbicara dengan chip ARM jarak jauh yang mungkin bukan sesuatu yang sering diuji oleh pengembang. Meski begitu, dua alat berbasis browser mampu menyelesaikan pekerjaan, meskipun mereka mengabaikan fitur protokol yang diperluas.

Apakah kamu peduli? Jika Anda menggunakan IDE yang mengintegrasikan gdb, mungkin tidak. Atau mungkin Anda terlalu tangguh untuk menggunakan debugger sama sekali. Tidak apa-apa. Tetapi untuk saat-saat Anda membutuhkan gdb, frontend ini dapat membuat Anda lebih produktif dan memberi Anda lebih banyak perhatian untuk fokus pada apa yang benar-benar penting: menemukan bug.

Sejujurnya, jika Anda berpikir untuk menggunakan antarmuka TUI, lihat dasbor yang kami bicarakan awal tahun ini. Jika Anda belum berhasil dengan debug jarak jauh gdb, Maya Posch mendukung Anda.