2 पॉइंट द्वारा GN⁺ 2023-11-12 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Spray debugger का परिचय

  • Spray, C code के लिए एक सरल और समझने में आसान debugger है.
  • यह चल रहे program के execution को control करने और उसकी state की जाँच व संशोधन करने की सुविधा देता है.
  • इसे debugger के अंदरूनी कामकाज के प्रति जिज्ञासा और debugging को अधिक सुलभ बनाने के तरीकों की खोज के उद्देश्य से विकसित करना शुरू किया गया.

मुख्य सुविधाएँ

  • function, file के भीतर line, और address पर breakpoint सेट करना.
  • variable, memory address, और register के मान को print और set करना.
  • C syntax highlighting, backtrace, और step-by-step execution.
  • command output format तय करने के लिए filter सुविधा.

विकास roadmap

  • जटिल struct का print और संशोधन.
  • जटिल struct के लिए syntax highlighting.
  • frame pointer के बजाय DWARF-आधारित backtrace.
  • inline function, external library loading, और debug किए जा रहे program को भेजे गए signal को catch करना.

इंस्टॉल करने का तरीका

  • Spray frontend का एक हिस्सा Scheme में लिखा गया है और CHICKEN Scheme के जरिए C में compile किया जाता है.
  • CHICKEN इंस्टॉल होना चाहिए, और libdwarf पर dependency होने के कारण उसे पहले इंस्टॉल करना होगा.
  • repository को clone करें और make command से Spray इंस्टॉल करें.
  • इसे $PATH में जोड़कर सामान्य command की तरह इस्तेमाल किया जा सकता है.

Spray का उपयोग

  • जिस binary को debug करना है उसमें debug information enabled होनी चाहिए और optimization disabled होना चाहिए.
  • program को compile करने के लिए Clang का उपयोग करना होगा.
  • पहले argument के रूप में debug की जाने वाली binary का नाम दें, और उसके बाद के arguments में debug किए जाने वाले program के arguments पास करें.

commands

value पढ़ना और लिखना

  • variable, register, और address के मान को print या set करें.
  • register नामों में AT&T assembly syntax के अनुसार % prefix इस्तेमाल होता है.
  • मानों को decimal या hexadecimal में दिया जा सकता है.

breakpoint

  • function, file के भीतर line, और address पर breakpoint सेट और delete करें.
  • continue command से अगले breakpoint तक execution जारी रखें.

step execution

  • अगली line पर जाएँ, function के अंदर जाएँ, या वर्तमान function से बाहर निकलें.
  • अगले instruction पर जाएँ, और वर्तमान स्थान से backtrace print करें.

filter

  • output format बदलने के लिए filter का उपयोग किया जा सकता है.
  • print और set command के बाद filter जोड़कर output format बदला जा सकता है.

योगदान कैसे करें

  • सभी योगदानों का स्वागत है; pull request भेजने से पहले local test suite चलाकर यह जाँचें कि functionality टूटी तो नहीं है.
  • कुछ खास मानों पर off-by-one error के कारण होने वाली test failure को नज़रअंदाज़ किया जा सकता है.

संदर्भ सामग्री

  • Sy Brand की blog series "Writing a Linux Debugger", DWARF 5 standard, libdwarf documentation, और Eli Bendersky की "How debuggers work" post.

GN⁺ की राय

इस लेख की सबसे महत्वपूर्ण बात यह है कि Spray, C code के लिए एक user-friendly debugger है और इसका फोकस debugging को अधिक सुलभ बनाना है. शुरुआती software engineer भी आसानी से समझ सकें, ऐसी संरचना और commands देकर यह जटिल debugging कार्यों को आसान बनाने में मदद करता है. साथ ही, development roadmap और contribution process भी स्पष्ट रूप से दिए गए हैं, जिससे open source project में भाग लेना चाहने वाले developers के लिए यह एक दिलचस्प अवसर बनता है.

1 टिप्पणियां

 
GN⁺ 2023-11-12
Hacker News राय
  • किशोर प्रोग्रामर का कोड खास तौर पर साफ, सुसंगत और अच्छी तरह मॉड्यूलराइज़्ड है। इस तरह के प्रोजेक्ट के लिए binary format और kernel API की असामान्य जानकारी चाहिए होती है। कई "उन्नत" प्रोग्रामर भी conceptual स्तर पर ऐसा कुछ बनाने में कठिनाई महसूस कर सकते हैं।

    • यह जानने की जिज्ञासा है कि 17 साल की उम्र में कोई यह ज्ञान कैसे हासिल करता है। क्या यह किताबों, साथियों, programming club, या programmer माता-पिता के ज़रिए हुआ होगा?
  • युवा प्रोग्रामरों का कोड पढ़ना दिलचस्प होता है। अनुभव कम होता है, लेकिन फिर भी काफ़ी ऊँचे स्तर की समझ के साथ design करते हुए देखा जा सकता है। लेखक तेज़ी से सीखता हुआ लगता है, और 6 महीनों के काम का नतीजा शानदार है।

  • इस स्तर की प्रतिबद्धता काबिले-तारीफ़ है। Google Summer of Code, KDE Season of Code, Linux Foundation LFX, और X.org EVoC जैसे प्रोग्रामों में भाग लेने की सलाह दी जाती है। वहाँ बहुत सी दिलचस्प समस्याएँ हैं। काश छात्र रहते समय ऐसे प्रोग्रामों के बारे में पता होता। अब full-time नौकरी होने के कारण open source में योगदान देने का समय नहीं है।

  • प्रोजेक्ट को पहली नज़र में देखने पर यह अच्छी तरह संगठित लगता है। इसकी सराहना की जानी चाहिए।

    • यह जानने की जिज्ञासा है कि उसने कितने समय से programming की है, और किस language से शुरुआत की थी। आपसे कई दशक बड़े डेवलपर्स में भी बहुत से लोग हैं जिन्हें Makefile लिखना नहीं आता।
    • यह भी जिज्ञासा है कि source code में inline emoji का इस्तेमाल कोई नया trend है, या non-ASCII input पर ध्यान देने के लिए किया गया है।
  • प्रोजेक्ट के लिए बधाई और शुभकामनाएँ। compiler उन पहले विषयों में से एक था जिसने computing में रुचि जगाई थी।

    • एक ऐसी किताब है जिसे कई बार दोबारा पढ़ा गया है, और वह अभी मुफ़्त उपलब्ध है। वह compiler वाले हिस्से पर है, लेकिन debugging के लिए भी दिलचस्प हो सकती है।
  • यह दिखाता है कि 17 साल के बच्चे अब भी CD को जानते हैं। floppy disk save icon भी शायद अभी पूरी तरह पुराना नहीं हुआ है।

  • 17 साल की उम्र में दिखाई गई जानकारी और परिपक्वता प्रभावशाली है। जिन विषयों पर शोध और काम किया गया है, वे विश्वविद्यालय स्तर पर अपेक्षित होते हैं, और यह प्रोजेक्ट तो postgraduate स्तर के coursework में आ सकता है। सफल करियर की शुभकामनाएँ।

  • याद आता है कि कम उम्र में Turbo Pascal का इस्तेमाल करके 2D graphics library लिखी थी। वह internet खोजने से पहले का समय था, इसलिए वह बस निजी आनंद तक सीमित रह गया, लेकिन इसे दूसरों के देखने लायक बनाना अच्छी बात है। कोड साफ है, टिप्पणियाँ अच्छी हैं, और README स्पष्ट है।

    • अपना काम दुनिया के सामने रखना डराने वाला हो सकता है, लेकिन लोग जो कहते हैं वह अक्सर उनके अपने बारे में भी होता है, इसलिए उनकी बातों को बहुत गंभीरता से लेने की ज़रूरत नहीं है।
  • प्रोजेक्ट के साथ "debugger लिखना" tutorial बनाना उबाऊ हो सकता है, लेकिन बहुत उपयोगी होगा।

  • यह जानने की जिज्ञासा है कि function name और argument के बीच खाली जगह क्यों डाली जाती है। 18 साल से C code पढ़ने वाले व्यक्ति के रूप में यह थोड़ा अजीब लगता है।

    • BSD style को प्राथमिकता दी जाती है, और अगर BSD system इस्तेमाल कर रहे हों, तो 'man style' देखकर उस style को आज़माने का सुझाव है।