-
rr'ye giriş
- rr, Linux üzerinde C/C++ için bir hata ayıklama aracıdır ve gdb'yi tamamlamayı amaçlar
- Bir hatayı bir kez kaydedip, o kaydı tekrar tekrar hata ayıklayabilirsiniz
- Her seferinde aynı yürütmeyi yeniden üreterek hata ayıklama yapılabilir
- gdb aracılığıyla verimli tersine yürütme sağlar
-
rr özellikleri
- Düşük ek yük
- Çeşitli uygulamaların kaydedilmesini ve yeniden oynatılmasını destekler (Firefox, Chrome, QEMU, LibreOffice vb.)
- Çok süreçli iş yüklerini kaydetme, yeniden oynatma ve hata ayıklama imkanı
- gdb betikleme ve IDE entegrasyonu desteği
- Dayanıklı ve sıkıştırılmış iz dosyaları, makineler arasında taşınabilir
- Aralıklı hataları yeniden üretmek için kaos modu sunar
-
rr hata ayıklama deneyimi
- Uygulamayı kaydetme:
rr record /your/application --args...
- Kaydedilmiş yürütmeyi hata ayıklama:
rr replay
- Kaydedilmiş izi deterministik olarak hata ayıklama
- Genel gdb komutları kullanılabilir
- Tersine yürütme ile sorun noktasına hızla gidilebilir
-
Video
- Firefox kayıt ve yeniden oynatma demo videosu
- rr'nin temel özelliklerini ayrıntılı olarak açıklayan video
- Robert O'Callahan'ın ileri teknikler üzerine konuşma videosu
-
Başlarken
- Kaynaktan derleme: paketler çalışmıyorsa önerilir
- Fedora ve Ubuntu için kurulum yöntemleri sunuluyor
-
Arka plan ve motivasyon
- Aralıklı başarısızlıkların hata ayıklanmasını kolaylaştırmak için geliştirildi
- Deterministik yeniden oynatma sayesinde hata ayıklama sırasında elde edilen bilgiler geçerliliğini korur
- Tersine yürütme, hata ayıklama sürecini kolaylaştırır
- rr, birçok büyük ve küçük projede düzenli olarak kullanılır
-
rr nasıl çalışır
- Linux kullanıcı alanı süreçlerini kaydeder ve çekirdekten gelen tüm girdileri yakalar
- Yeniden oynatma sırasında komut düzeyinde denetim akışı, bellek ve yazmaç içeriklerini garanti eder
- Bellek yerleşimi, nesne adresleri, yazmaç değerleri vb. aynı kalır
- Fuzzer'lar ve rastgele hata enjeksiyon araçlarıyla birlikte kullanıldığında daha da güçlü hale gelir
-
rr'nin bağlamı
- Kayıt ve yeniden oynatma ile hata ayıklama eski bir fikirdir
- Firefox odaklı tasarım hedefleri
- Dağıtılabilirlik: sıradan Linux çekirdeğinde çalışır, sistem yapılandırmasını değiştirmeyi gerektirmez
- Düşük çalışma zamanı ek yükü
- Basit tasarım: karmaşık tekniklerden kaçınır
-
Sınırlamalar
- Tek çekirdekli bir makineyi taklit eder
- Kayıt ağacının dışıyla bellek paylaşan süreçleri kaydedemez
- Modern bir x86 CPU veya belirli ARM CPU'lar gerektirir
- Kaydedilen sürecin yürüttüğü tüm sistem çağrıları hakkında bilgi gerektirir
- Çekirdek değişikliklerine, sistem kütüphanesi güncellemelerine ve yeni CPU ailelerine uyum sağlanması gerekir
-
Ek kaynaklar
- Genişletilmiş teknik rapor
- rr wiki'si
- Sorular için e-posta listesi veya chat.mozilla.org üzerindeki #rr kanalı kullanılabilir
GN⁺ özeti
- rr, Linux'ta C/C++ hata ayıklaması için güçlü bir araçtır ve deterministik yeniden oynatma ile hata ayıklama verimliliğini büyük ölçüde artırır
- Çeşitli uygulamaları ve çok süreçli iş yüklerini destekler; düşük ek yükü sayesinde pratiktir
- Tersine yürütme özelliği hata ayıklama sürecini daha da kolaylaştırır
- Firefox gibi karmaşık uygulamaları hata ayıklayabildiği için genel olarak kullanışlıdır
- Benzer işlevlere sahip araçlar arasında gdb ve Valgrind bulunur
1 yorum
Hacker News yorumları