Di HN: Remaja 17 Tahun Menginvestasikan 6 Bulan untuk Mengembangkan Debugger C
(github.com/d4ckard)Pengenalan debugger Spray
- Spray adalah debugger yang sederhana dan mudah dipahami untuk kode C.
- Menyediakan kemampuan untuk mengontrol eksekusi program yang sedang berjalan serta memeriksa dan memodifikasi statusnya.
- Pengembangan dimulai untuk mengeksplorasi rasa ingin tahu tentang cara kerja internal debugger dan bagaimana membuat debugging lebih mudah diakses.
Fitur utama
- Menetapkan breakpoint pada fungsi, baris dalam file, dan alamat.
- Menampilkan dan mengatur nilai variabel, alamat memori, dan register.
- Highlighting sintaks C, backtrace, eksekusi langkah demi langkah.
- Fitur filter untuk menentukan format output perintah.
Roadmap pengembangan
- Menampilkan dan memodifikasi struct yang kompleks.
- Highlighting sintaks untuk struct yang kompleks.
- Backtrace berbasis DWARF alih-alih frame pointer.
- Menangani fungsi inline, pemuatan library eksternal, dan menangkap sinyal yang dikirim ke program yang sedang di-debug.
Cara instalasi
- Sebagian frontend Spray ditulis dengan Scheme dan dikompilasi ke C melalui CHICKEN Scheme.
- Perlu menginstal CHICKEN, dan karena bergantung pada libdwarf, itu harus diinstal terlebih dahulu.
- Clone repositori dan instal Spray dengan perintah
make. - Tambahkan ke
$PATHagar bisa digunakan seperti perintah biasa.
Cara menggunakan Spray
- Informasi debug harus diaktifkan pada biner yang akan di-debug, dan optimisasi harus dinonaktifkan.
- Program harus dikompilasi menggunakan Clang.
- Berikan nama biner yang akan di-debug sebagai argumen pertama, lalu argumen untuk program yang akan di-debug setelahnya.
Perintah
Membaca dan menulis nilai
- Menampilkan atau mengatur nilai variabel, register, dan alamat.
- Nama register menggunakan prefiks
%sesuai sintaks assembly AT&T. - Nilai dapat ditentukan dalam desimal atau heksadesimal.
Breakpoint
- Menetapkan dan menghapus breakpoint pada fungsi, baris dalam file, dan alamat.
- Lanjutkan eksekusi hingga breakpoint berikutnya dengan perintah
continue.
Eksekusi langkah demi langkah
- Pindah ke baris berikutnya, masuk ke dalam fungsi, atau keluar dari fungsi saat ini.
- Pindah ke instruksi berikutnya, dan tampilkan backtrace dari lokasi saat ini.
Filter
- Dapat menggunakan filter untuk mengubah format output.
- Tempelkan filter setelah perintah
printdansetuntuk mengubah format output.
Cara berkontribusi
- Semua kontribusi diterima, dan sebelum pull request jalankan test suite lokal untuk memastikan tidak merusak fitur.
- Kegagalan tes akibat kesalahan off-by-one pada nilai tertentu dapat diabaikan.
Referensi
- Seri blog Sy Brand "Writing a Linux Debugger", standar DWARF 5, dokumentasi libdwarf, dan artikel Eli Bendersky "How debuggers work".
Pendapat GN⁺
Hal terpenting dari tulisan ini adalah bahwa Spray adalah debugger yang ramah pengguna untuk kode C, dengan fokus membuat debugging lebih mudah diakses. Daya tariknya terletak pada kemampuannya membantu tugas debugging yang kompleks menjadi lebih mudah dengan menyediakan struktur dan perintah yang gampang dipahami bahkan oleh software engineer pemula. Selain itu, roadmap pengembangan dan cara berkontribusinya disajikan dengan jelas, sehingga memberikan peluang menarik bagi developer yang ingin berpartisipasi dalam proyek open source.
1 komentar
Komentar Hacker News
Kode dari programmer remaja ini sangat rapi, konsisten, dan termodularisasi dengan baik. Proyek seperti ini memerlukan pengetahuan yang tidak lazim tentang format biner dan API kernel. Banyak programmer "mahir" pun mungkin akan kesulitan membangun sesuatu seperti ini bahkan pada tingkat konseptual.
Menarik membaca kode dari programmer muda. Meski pengalamannya masih terbatas, terlihat mereka merancang dengan tingkat pengetahuan yang cukup tinggi. Penulis tampaknya belajar dengan cepat, dan hasil kerja selama 6 bulan ini luar biasa.
Kagum dengan tingkat dedikasi seperti ini. Saya merekomendasikan untuk mengikuti program seperti Google Summer of Code, KDE Season of Code, Linux Foundation LFX, dan X.org EVoC. Ada banyak masalah menarik di sana. Andai saya tahu program-program seperti ini saat masih menjadi pelajar. Sekarang saya punya pekerjaan penuh waktu dan tidak punya waktu untuk berkontribusi ke open source.
Saat pertama kali melihat proyek ini, tampilannya sangat terorganisasi. Patut dipuji.
Selamat atas proyek ini dan semoga sukses. Compiler adalah salah satu topik pertama yang membuat saya tertarik pada komputasi.
Ini menunjukkan bahwa anak 17 tahun pun masih tahu apa itu CD. Ikon simpan berbentuk disket mungkin juga belum benar-benar ketinggalan zaman.
Pengetahuan dan kedewasaan yang ditunjukkan di usia 17 tahun sangat mengesankan. Topik yang diteliti dan diterapkan biasanya diharapkan pada tingkat universitas, dan proyek ini layak masuk ke mata kuliah tingkat pascasarjana. Semoga kariernya sukses.
Saya ingat saat muda dulu menulis library grafis 2D menggunakan Turbo Pascal. Itu berakhir hanya sebagai kesenangan pribadi karena saat itu saya belum mengenal internet, tetapi saya rasa dia sudah melakukan hal yang baik dengan membuatnya bisa dilihat orang lain. Kodenya rapi, komentarnya baik, dan README-nya jelas.
Membuat tutorial "menulis debugger" bersama proyek ini mungkin terasa membosankan, tetapi akan sangat berguna.
Saya penasaran mengapa ada spasi antara nama fungsi dan argumennya. Sebagai orang yang sudah 18 tahun membaca kode C, itu terasa agak asing.