16 पॉइंट द्वारा GN⁺ 2025-03-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • कई 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 टिप्पणियां

 
GN⁺ 2025-03-07
Hacker News राय
  • कमाल है। बहुत पहले मुझे Intel प्रोसेसर डिज़ाइनरों से फीचर रिक्वेस्ट करने का मौका मिला था

    • मैंने log stamping के लिए system tick timer मांगा था, और उन्होंने उसे लागू किया
    • मैंने debug interrupt trigger करने के लिए bus mask और value registers भी मांगे थे, और वह भी लागू किए गए
    • मैंने jump source history भी मांगी थी, लेकिन वह नहीं हो पाया
    • उस समय Intel बस को रिकॉर्ड करने वाले महंगे debug probes बेचता था
    • मेरी jump history शायद ज़्यादातर users के लिए उसकी ज़रूरत खत्म कर सकती थी
    • आखिरकार वह नहीं हो पाया, और हमने trace पर trace जोड़ने के लिए code 'debug' को फिर से build किया
  • Noir support समझ में आता है क्योंकि ZK proofs में execution trace खास तौर पर मूल्यवान होता है

    • मैं Python और Ruby implementations की उम्मीद कर रहा हूँ
    • इन भाषाओं की dynamic nature की वजह से कुछ bugs ढूँढना खास तौर पर मुश्किल होता है
    • सोच रहा हूँ क्या यहाँ किसी ने Noir इस्तेमाल किया है
    • trace mechanism के performance overhead को लेकर भी जिज्ञासा है
    • यह भी जानना चाहता हूँ कि web development के लिए JavaScript/TypeScript support की कोई योजना है या नहीं
  • अगर आप Clojure या ClojureScript इस्तेमाल करते हैं, तो FlowStorm ज़रूर देखें

  • Noir, SNARK proof systems के लिए एक domain-specific language है

  • सोच रहा हूँ कि CodeTracer को दो भाषाओं में क्यों लिखा गया

  • यह सच में बहुत पसंद आया। मैं हमेशा से ऐसा कुछ चाहता था

    • बाद में इसे Python के साथ आज़माने वाला हूँ
    • JS/TS support भी हो तो अच्छा होगा
    • सोच रहा हूँ क्या rr debugger MacOS, Windows, Android को support करता है
    • यह भी जिज्ञासा है कि सामान्य apps के लिए recording कितनी heavy होती है
    • यह भी अच्छा होगा अगर LLM, MCP server के ज़रिए context दे सके, या LLM को यह चुनने दिया जाए कि वह किन variables की history देखना चाहता है
    • recording filtering feature भी अच्छा होगा
  • दिलचस्प लग रहा है, लेकिन production systems में trace files बहुत तेज़ी से बढ़ेंगी

    • सोच रहा हूँ files को किसी खास session से जोड़ने का तरीका क्या होगा
  • Nim ecosystem बनाने के लिए धन्यवाद

  • इसे लेकर बहुत उत्साहित हूँ। मैं पहले ही Open Collective पर दान कर चुका हूँ

    • टीम प्रतिभाशाली लोगों से भरी हुई है
    • time travel debugging के लिए बढ़िया interface है
    • rr इस्तेमाल करने पर शायद यह macOS पर नहीं चल पाएगा
    • अच्छी बात है कि lima vms को remote पर आसानी से बनाया जा सकता है
  • रिलीज़ की बधाई। आपने अब तक शानदार काम किया है

    • अभी मुझे इसकी ज़रूरत नहीं है, लेकिन alternative backend development और अतिरिक्त programming language support पर नज़र रखूँगा
    • धन्यवाद