-
Pengenalan rr
- rr adalah alat debugging C/C++ di Linux, ditujukan untuk melengkapi gdb
- Kegagalan dapat direkam satu kali lalu di-debug berulang kali dari rekaman tersebut
- Debugging dimungkinkan dengan mereproduksi eksekusi yang sama setiap saat
- Menyediakan eksekusi mundur yang efisien melalui gdb
-
Fitur rr
- Overhead rendah
- Mendukung perekaman dan pemutaran ulang berbagai aplikasi (Firefox, Chrome, QEMU, LibreOffice, dll.)
- Dapat merekam, memutar ulang, dan men-debug beban kerja multiproses
- Mendukung scripting gdb dan integrasi IDE
- File jejak yang tahan lama dan terkompresi, dapat dipindahkan antar mesin
- Menyediakan mode chaos untuk mereproduksi bug intermiten
-
Pengalaman debugging rr
- Merekam aplikasi:
rr record /your/application --args...
- Men-debug eksekusi yang direkam:
rr replay
- Men-debug jejak yang direkam secara deterministik
- Dapat menggunakan perintah gdb biasa
- Dapat dengan cepat berpindah ke titik masalah melalui eksekusi mundur
-
Video
- Video demo perekaman dan pemutaran ulang Firefox
- Video yang menjelaskan fitur dasar rr secara rinci
- Video kuliah teknis lanjutan oleh Robert O'Callahan
-
Memulai
- Build dari source: direkomendasikan jika paket tidak berfungsi
- Menyediakan cara instalasi di Fedora dan Ubuntu
-
Latar belakang dan motivasi
- Dikembangkan untuk mempermudah debugging kegagalan intermiten
- Melalui pemutaran ulang deterministik, informasi yang diperoleh selama proses debugging tetap valid
- Eksekusi mundur membuat proses debugging menjadi lebih mudah
- rr digunakan secara rutin di banyak proyek besar maupun kecil
-
Cara kerja rr
- Merekam proses ruang pengguna Linux dan menangkap semua input dari kernel
- Saat pemutaran ulang, menjamin alur kontrol tingkat instruksi, memori, dan isi register
- Tata letak memori, alamat objek, nilai register, dan sebagainya tetap sama
- Menjadi lebih kuat saat digunakan bersama fuzzer dan injector fault acak
-
Konteks rr
- Debugging rekam dan putar ulang adalah gagasan lama
- Tujuan desain yang berfokus pada Firefox
- Kemudahan distribusi: berjalan di kernel Linux biasa, tanpa perlu mengubah konfigurasi sistem
- Overhead runtime rendah
- Desain sederhana: menghindari teknik yang rumit
-
Keterbatasan
- Mengemulasi mesin single-core
- Tidak dapat merekam proses yang berbagi memori dengan pihak di luar pohon perekaman
- Memerlukan CPU x86 modern atau CPU ARM tertentu
- Perlu mengetahui semua system call yang dijalankan oleh proses yang direkam
- Perlu menyesuaikan diri dengan perubahan kernel, pembaruan pustaka sistem, dan keluarga CPU baru
-
Referensi tambahan
- Laporan teknis yang diperluas
- Wiki rr
- Dapat mengajukan pertanyaan melalui mailing list atau di #rr pada chat.mozilla.org
Ringkasan GN⁺
- rr adalah alat yang kuat untuk debugging C/C++ di Linux, yang sangat meningkatkan efisiensi debugging melalui pemutaran ulang deterministik
- Mendukung berbagai aplikasi dan beban kerja multiproses, serta praktis berkat overhead yang rendah
- Fitur eksekusi mundur membuat proses debugging menjadi lebih mudah
- Dapat men-debug aplikasi kompleks seperti Firefox sehingga berguna secara umum
- Alat dengan fungsi serupa antara lain gdb dan Valgrind
1 komentar
Komentar Hacker News