-
rr परिचय
- rr Linux पर C/C++ के लिए एक डिबगिंग टूल है, जिसका उद्देश्य gdb को पूरक बनाना है
- किसी विफलता को एक बार रिकॉर्ड करके उसके रिकॉर्ड को बार-बार डिबग किया जा सकता है
- हर बार उसी execution को दोहराकर डिबग करना संभव है
- gdb के माध्यम से कुशल reverse execution प्रदान करता है
-
rr की विशेषताएँ
- कम overhead
- विभिन्न applications के रिकॉर्ड और रीप्ले का समर्थन (Firefox, Chrome, QEMU, LibreOffice आदि)
- multi-process workloads को रिकॉर्ड, रीप्ले और डिबग किया जा सकता है
- gdb scripting और IDE integration का समर्थन
- टिकाऊ और compressed trace files, जिन्हें machines के बीच ले जाया जा सकता है
- intermittent bugs को पुन: उत्पन्न करने के लिए chaos mode उपलब्ध
-
rr डिबगिंग अनुभव
- application रिकॉर्ड करें:
rr record /your/application --args...
- रिकॉर्ड किए गए execution को डिबग करें:
rr replay
- रिकॉर्ड किए गए trace को deterministic तरीके से डिबग करें
- सामान्य gdb commands का उपयोग किया जा सकता है
- reverse execution के जरिए जल्दी से समस्या वाले बिंदु तक पहुँचा जा सकता है
-
वीडियो
- Firefox रिकॉर्ड और रीप्ले डेमो वीडियो
- rr की बुनियादी विशेषताओं को विस्तार से समझाने वाला वीडियो
- Robert O'Callahan का उन्नत तकनीकी व्याख्यान वीडियो
-
शुरुआत
- source से build करें: अगर packages काम न करें तो इसकी सिफारिश की जाती है
- Fedora और Ubuntu पर installation के तरीके दिए गए हैं
-
पृष्ठभूमि और प्रेरणा
- intermittent failures की डिबगिंग को आसान बनाने के लिए विकसित किया गया
- deterministic replay के कारण डिबगिंग प्रक्रिया में मिली जानकारी वैध बनी रहती है
- reverse execution की वजह से डिबगिंग प्रक्रिया और आसान हो जाती है
- rr का नियमित उपयोग कई बड़े और छोटे projects में किया जाता है
-
rr कैसे काम करता है
- Linux user-space processes को रिकॉर्ड करता है और kernel से आने वाले सभी inputs को कैप्चर करता है
- रीप्ले के दौरान instruction-level control flow, memory और register contents की गारंटी देता है
- memory layout, object addresses, register values आदि समान बने रहते हैं
- fuzzer और random fault injectors के साथ उपयोग करने पर यह और शक्तिशाली हो जाता है
-
rr का संदर्भ
- रिकॉर्ड और रीप्ले डिबगिंग एक पुराना विचार है
- Firefox पर केंद्रित design goals
- deployability: सामान्य Linux kernel पर चलता है, system configuration बदलने की आवश्यकता नहीं
- कम runtime overhead
- सरल design: जटिल तकनीकों से बचाव
-
सीमाएँ
- single-core machine को emulate करता है
- record tree के बाहर memory साझा करने वाली processes को रिकॉर्ड नहीं किया जा सकता
- आधुनिक x86 CPU या कुछ विशेष ARM CPU की आवश्यकता होती है
- रिकॉर्ड की गई process द्वारा चलाए जाने वाले सभी system calls की जानकारी आवश्यक है
- kernel changes, system library updates, और नई CPU families के अनुसार अनुकूलन की आवश्यकता होती है
-
अतिरिक्त संदर्भ सामग्री
- विस्तृत technical report
- rr wiki
- mailing list या chat.mozilla.org के #rr में प्रश्न पूछे जा सकते हैं
GN⁺ का सार
- rr Linux पर C/C++ डिबगिंग के लिए एक शक्तिशाली टूल है, जो deterministic replay के जरिए डिबगिंग दक्षता को काफी बेहतर बनाता है
- यह विभिन्न applications और multi-process workloads का समर्थन करता है, और कम overhead के साथ व्यावहारिक है
- reverse execution फीचर डिबगिंग प्रक्रिया को और आसान बनाता है
- यह Firefox जैसे जटिल applications को डिबग कर सकता है, इसलिए सामान्य रूप से भी उपयोगी है
- समान कार्यक्षमता वाले टूल्स में gdb और Valgrind शामिल हैं
1 टिप्पणियां
Hacker News टिप्पणियाँ