- कई programming languages को support करने वाला, इस्तेमाल में आसान time travel debugger
- यह program execution को रिकॉर्ड करके share किए जा सकने वाले स्वतंत्र trace files बनाता है, और GUI environment में execution को आगे-पीछे ले जाकर हर memory location की history देखी जा सकती है
- time travel debugging के फायदे
- जिन bugs को reproduce करना मुश्किल होता है, उन्हें आसानी से हल किया जा सकता है : अगर bug होने वाले execution की recording हो, तो 30 मिनट के भीतर कारण पता लगाया जा सकता है
- किसी value की उत्पत्ति पता हो तो bug fix करना आसान हो जाता है
- अगर program में unexpected output आता है, तो उस event पर क्लिक करके समस्या के उत्पन्न होने की जगह तुरंत देखी जा सकती है
- CodeTracer यह ट्रैक करता है कि वह value कहाँ बनी थी, ताकि कुछ ही steps में bug के root cause तक पहुँचा जा सके
- program execution के किसी भी क्षण पर स्वतंत्र रूप से आगे-पीछे जाकर जांच की जा सकती है
- tracing में open format का उपयोग होता है, और Ruby, Python जैसी languages के support projects प्रगति पर हैं
- RR backend के साथ integration के जरिए C/C++, Rust, Nim, D, Zig, Go, Fortran, FreePascal जैसी system programming languages की debugging support करने की योजना है
CodeTracer की मुख्य विशेषताएँ
सर्वज्ञ debugging (Omniscience)
- execution के दौरान किसी खास code line पर भूत और भविष्य के variable values तुरंत देखे जा सकते हैं
- loop के भीतर variable values के बदलाव को आसानी से explore किया जा सकता है
- जो code execute हुआ और जो नहीं हुआ, उनके बीच स्पष्ट अंतर दिखता है
tracepoints
- अतिरिक्त code execution के बिना program के भीतर variable values के बदलाव तुरंत देखे जा सकते हैं
- conditions, function calls, data output आदि को आसानी से जोड़कर debugging की जा सकती है
call trace
- यह सिर्फ साधारण stack trace नहीं, बल्कि पूरे program execution का function call tree देता है
- filtering और sorting के जरिए इसे आसानी से explore किया जा सकता है
state और history explorer
- सभी variables के value change history को ट्रैक किया जा सकता है
- variable की value जहाँ बदली गई, उस code location पर तुरंत जाया जा सकता है
- copied variables की original value को अपने-आप ट्रैक करके bug analysis आसान बनाता है
event log
- program के महत्वपूर्ण events को समय क्रम में व्यवस्थित करके दिखाता है
- किसी specific event पर क्लिक करने पर उस क्षण के code पर तुरंत जाया जा सकता है
terminal output
stdout, stderr output को terminal की तरह पुनःनिर्मित करके रिकॉर्ड किए गए program output को देखा जा सकता है
- क्लिक करने पर उस code location पर जाया जा सकता है जहाँ output वास्तव में हुआ था
mouse stepping
- mouse का उपयोग करके code के किसी specific हिस्से पर तुरंत जाया जा सकता है
- line navigation: middle click (
Ctrl+क्लिक भी संभव)
- function entry: function call पर double click करके अंदर जाएँ (
Ctrl+Alt+क्लिक भी संभव)
- extra options: right-click menu में अतिरिक्त features देखे जा सकते हैं
scratchpad
- किसी specific समय बिंदु पर variable values को pin करके compare और analysis किया जा सकता है
- code execution flow को visual रूप से compare करके समस्या का analysis किया जा सकता है
CodeTracer CLI commands
ct run <application> - program चलाएँ और अपने-आप रिकॉर्ड करें
ct record <application> - trace file बनाएँ
ct replay - बनाई गई trace file चलाएँ
ct replay <program-name> - आखिरी execution record लोड करें
ct replay --id=<trace-id> - किसी specific trace ID के साथ चलाएँ
ct replay --trace-folder=<trace-folder> - किसी specific folder के भीतर trace file चलाएँ
ct help / ct --help - उपलब्ध commands देखें
ct version - वर्तमान version देखें
keyboard shortcuts
- default shortcuts Visual Studio™ users के लिए परिचित शैली में हैं
- मौजूदा debugging features के reverse functions
Shift key के साथ दिए जाते हैं (F10 = "next step", Shift+F10 = "previous step")
~/.config/codetracer/.config.yml file को संशोधित करके shortcuts को customize किया जा सकता है
1 टिप्पणियां
Hacker News राय
कमाल है। बहुत पहले मुझे Intel प्रोसेसर डिज़ाइनरों से फीचर रिक्वेस्ट करने का मौका मिला था
Noir support समझ में आता है क्योंकि ZK proofs में execution trace खास तौर पर मूल्यवान होता है
अगर आप Clojure या ClojureScript इस्तेमाल करते हैं, तो FlowStorm ज़रूर देखें
Noir, SNARK proof systems के लिए एक domain-specific language है
सोच रहा हूँ कि CodeTracer को दो भाषाओं में क्यों लिखा गया
यह सच में बहुत पसंद आया। मैं हमेशा से ऐसा कुछ चाहता था
दिलचस्प लग रहा है, लेकिन production systems में trace files बहुत तेज़ी से बढ़ेंगी
Nim ecosystem बनाने के लिए धन्यवाद
इसे लेकर बहुत उत्साहित हूँ। मैं पहले ही Open Collective पर दान कर चुका हूँ
रिलीज़ की बधाई। आपने अब तक शानदार काम किया है