Dalam dunia alat pengembangan Linux, debugging telah lama didominasi oleh GDB dan LLDB - keduanya kuat namun sering dikritik karena pengalaman penggunanya. Pesaing baru telah muncul di ranah ini: 'nnd', sebuah debugger yang dibangun dari awal yang menjanjikan peningkatan kecepatan dan kegunaan dibandingkan opsi tradisional.
Pendekatan Baru untuk Debugging Linux
Debugger baru 'nnd' terinspirasi dari RemedyBG tetapi menciptakan jalurnya sendiri sebagai debugger Terminal User Interface (TUI) untuk Linux. Yang membedakannya adalah fokusnya pada kecepatan dan responsivitas - masalah umum dengan alat yang sudah ada. Tidak seperti GDB atau LLDB, 'nnd' sebagian besar diimplementasikan dari awal, memungkinkannya untuk mengoptimalkan kinerja bahkan ketika bekerja dengan executable besar seperti ClickHouse 2,5 GB yang telah diuji oleh pengembangnya.
Penerimaan komunitas menyoroti bagaimana alat ini mengatasi frustrasi lama dengan alur kerja debugging. Salah satu fitur yang paling dihargai adalah implementasi progress bar dan operasi asinkron untuk tugas-tugas yang biasanya menyebabkan debugger membeku atau hang.
Saya berharap ini lebih umum, terutama hal progress bar.
Sentimen ini beresonansi dengan banyak pengembang yang telah mengalami frustrasi menunggu simbol debug dimuat tanpa indikasi kemajuan. Komentator lain menyebutkan bagaimana pekerjaan sebelumnya melibatkan pembukaan sekitar 200 plugin DLL saat startup, yang akan sepenuhnya menghentikan GDB selama pengindeksan simbol DWARF.
Set Fitur yang Terbatas Namun Terfokus
Meskipun 'nnd' menunjukkan harapan, alat ini memiliki keterbatasan yang jelas. Saat ini hanya mendukung Linux pada arsitektur x86 64-bit dan bekerja secara eksklusif dengan kode native seperti C++ atau Rust (bukan bahasa yang diinterpretasi seperti Java atau Python). Debugger ini juga tidak memiliki kemampuan debugging jarak jauh (meskipun berfungsi melalui SSH), tidak mengikuti proses yang di-fork, dan tidak memiliki fungsionalitas record/replay.
Terlepas dari keterbatasan ini, pendekatan yang terfokus tampaknya memenangkan penggemar. Beberapa komentator membandingkannya dengan alat lama yang mereka rindukan, dengan satu catatan bahwa itu mengingatkan mereka pada CodeView yang saya ingin kembali sejak dulu, dan tidak, setumpuk besar plugin Emacs atau vim bukanlah hal yang setara.
Properti Utama Debugger nnd
- TUI (Terminal User Interface) yang cepat dan responsif
- Tidak berbasis pada GDB atau LLDB, sebagian besar diimplementasikan dari awal
- Bekerja pada file executable berukuran besar (telah diuji pada ClickHouse berukuran 2,5 GB)
- Operasi asinkronus dengan indikator kemajuan
- Didistribusikan sebagai satu file executable berukuran 6 MB tanpa dependensi
Keterbatasan Saat Ini
- Hanya untuk Linux
- Hanya untuk arsitektur x86-64
- Hanya untuk kode native (C++, Rust, dll.)
- Hanya TUI (tidak ada REPL atau GUI)
- Tidak ada debugging jarak jauh (bekerja melalui SSH)
- Proses tunggal (tidak mengikuti fork)
- Tidak ada fungsionalitas rekam/putar ulang
Keadaan Alat Debugging
Kemunculan 'nnd' menyoroti percakapan yang lebih luas tentang keadaan alat debugging di berbagai platform. Komentar mengungkapkan titik sakit khusus bagi pengguna macOS, dengan satu keluhan bahwa kekeringan macOS berlanjut mengenai alat debugging berkualitas. Yang lain menyebutkan bahwa mereka menantikan port Linux dari RAD Debugger yang dijanjikan, menunjukkan kebutuhan umum akan pengalaman debugging yang lebih baik.
Untuk pengembang yang tertarik dengan alternatif, diskusi komunitas menunjuk ke beberapa pilihan seperti pwndbg (yang menambahkan peningkatan kualitas hidup ke GDB/LLDB) dan cgdb (TUI GDB berbasis ncurses dengan binding vim).
Executable mandiri 6 MB tanpa dependensi membuat 'nnd' sangat menarik bagi mereka yang ingin dengan cepat mencoba pendekatan debugging baru tanpa pengaturan yang kompleks. Meskipun masih dalam pengembangan aktif dengan fitur-fitur penting yang diimplementasikan, pembuatnya mencatat bahwa mereka menggunakannya setiap hari dan menemukannya sangat membantu, meskipun belum diuji secara luas di berbagai lingkungan.
Seiring alat pengembangan terus berkembang, 'nnd' mewakili upaya terfokus untuk meningkatkan bagian penting dari alur kerja programmer yang telah melihat relatif sedikit inovasi dibandingkan dengan area seperti sistem build dan editor.
Referensi: al13n321/nnd