- Spray C code के लिए एक छोटा debugger है, जिसका लक्ष्य features को सरल और समझने में आसान रखना है ताकि चल रहे program को control किया जा सके और उसकी state की जांच व संशोधन किया जा सके
- समर्थित features में function, file line, और address-आधारित breakpoints, variable, address memory और register को print व set करना, C syntax highlighting, backtrace, instruction/function/line स्तर stepping, और command output format filters शामिल हैं
- REPL commands
print/set,break/delete,continue,next,step,leave,inst,backtraceके जरिए execution control और values को read/write किया जाता है printऔरsetके बाद pipe(|) के साथ filters लगाए जा सकते हैं, औरdec,hex,addr,bits,bytes,deref/*की मदद से एक ही 64-bit value को अलग-अलग formats में दिखाया जा सकता है या address dereference किया जा सकता है- Build के लिए CHICKEN Scheme और libdwarf की जरूरत होती है, और submodules सहित clone करने के बाद
makeचलाने परbuilddirectory मेंspraybinary बनती है - Debugging target binary को
-gflag के साथ compile करना होगा ताकि debug information शामिल हो, और बेहतर output के लिए optimization बंद रखना सबसे अच्छा है - Spray को सिर्फ Clang के साथ test किया गया है, और क्योंकि हर compiler एक ही code के लिए debug information अलग तरह से बनाता है, इसलिए जिस program को Spray से debug करना है उसे
clangसे compile करना चाहिए - Roadmap में complex struct print/modify, complex struct syntax highlighting, frame pointer की जगह DWARF-आधारित backtrace, inline functions, external library loading, और debugged program को भेजे गए signals को capture करना अभी बाकी है
1 टिप्पणियां
Hacker News की राय
खास तौर पर यह साफ-सुथरा, सुसंगत और अच्छी तरह modularized है, और ऐसी समस्या से निपटता है जिसके लिए binary formats और kernel API की काफी गहरी समझ चाहिए
कई “senior” programmers भी ऐसी चीज़ को concept level पर भी बनाना मुश्किल समझेंगे; यह “आजकल के बच्चे…” वाली सोच का बिल्कुल उल्टा है
जिज्ञासा है कि 17 साल का कोई इस स्तर का ज्ञान कैसे हासिल करता है। किताबें, peers, programming club, programmer parents जैसी चीज़ें?
शुद्ध जिज्ञासा, ज़रूरी hardware तक “बस access होना” जैसी बड़ी शर्त, और थोड़ी-सी किताबों व magazines से भी आप काफी दूर तक जा सकते हैं
मेरे parents programmers नहीं थे, लेकिन मेरे पिता ने 1984 में जल्दी ही computer खरीद लिया था, और बाद में अपनी job के जरिए TurboPascal, C++ जैसे compilers घर ले आए ताकि मैं experiment कर सकूँ
मैंने मुख्यतः magazines और books से सीखा, बाद में demo-making वाले कुछ peers से थोड़ा interaction हुआ, और documentation वाली disks (https://fr.wikipedia.org/wiki/DP_Tool_Club) डाक से खरीदीं। उदाहरण के लिए https://en.wikipedia.org/wiki/Ralf_Brown%27s_Interrupt_List जैसी सामग्री थी
छोटी-छोटी चीज़ें बनाते हुए धीरे-धीरे iterate किया; CGA के लिए windowing toolkit, Tetris clone, Bomberman clone, FFT software से होते हुए, आखिरकार FPU के बिना सिर्फ software से Phong rendering जैसी real-time 3D rendering तक बना ली (https://github.com/thbar/demomaking#obez-1995)
demo-making दुनिया में वही काम कर रहे दूसरे teenagers संयोग से मिले, इसलिए मैं कोई पूरी तरह अलग-थलग खास मामला नहीं था
आज कोई जिज्ञासु बच्चा, अगर उसकी curiosity को ठीक से प्रोत्साहन मिले, तो शायद बहुत आगे जा सकता है
और आपका अंदाज़ा सही है, मेरे पिता computer scientist हैं
कुछ बच्चे सचमुच कमाल के होते हैं। मैं उस उम्र में C++ सीखते-सीखते frustrate होकर रो पड़ा था
शानदार। काश बचपन में मुझमें भी इतना dedication होता
Google Summer of Code, KDE Season of Code, Linux Foundation LFX, X.org EVoC जैसे programs में हिस्सा लेने की सलाह दूँगा
हल करने लायक कई interesting problems हैं। काश student रहते मुझे इनके बारे में पता होता; अब full-time job है, इसलिए open source में contribute करने का समय नहीं है
आगे भी अच्छा करते रहो
project पर पहली नज़र डाली तो यह अच्छी तरह organized लगा। बेहतरीन
जानना चाहूँगा कि programming कितने समय से कर रहे हो और किस language से शुरू किया था। अपने से कई दशक बड़े developers में भी मैं ऐसे काफी लोगों को जानता हूँ जो अभी तक Makefile नहीं लिख पाते[1]
source में inline emoji का इरादा क्या है, यह जानने की curiosity है। क्या आजकल के cool kids सब ऐसा करते हैं, या non-ASCII input के प्रति जागरूक रखने के लिए है?
[1]: dynamically generated targets का उपयोग या समझ न पाने वाले तो और भी ज्यादा हैं
emoji कोई ऐसा मज़ाक था जो करीब एक हफ्ते तक चला। Rust side में emoji कहीं ज्यादा बार दिखते हैं। उन्हें हटाने की जरूरत नहीं समझी
PID के आसपास bug emoji मुझे मजेदार लगते हैं। comments वाले शायद किसी दिन हट जाएँ। हालांकि अब तक editor issues नहीं आए, और Helix, Emacs, VSCode सभी ठीक चलते हैं
सोच रहा हूँ कि अगर terminal colors बंद हों, तो REPL में standard output पर emoji print करना भी disable कर देना चाहिए या नहीं
बधाई, और projects के लिए शुभकामनाएँ
compilers उन शुरुआती rabbit holes में से एक थे जिनसे मेरी computing में रुचि बनी
जिन किताबों को मैंने बार-बार अंतहीन पढ़ा, उनमें से एक अब free में उपलब्ध है; debugging नहीं बल्कि compiler side की है, फिर भी reading list में डालने लायक हो सकती है
“Compiler Design in C”
https://holub.com/compiler/
थोड़ी पुरानी किताब है, लेकिन interesting हो सकती है
दुर्भाग्य से कई किताबें बहुत ivory-tower style की होती हैं
17 साल की उम्र में इतना ज्ञान और परिपक्वता बहुत impressive है
जिन topics से यह deal और experiment कर रहा है, वे undergraduate level पर अपेक्षित चीज़ें हैं, और उनमें भी यह project graduate course level के करीब है
सम्मान, और सफल career की शुभकामनाएँ
कुछ साल बाद भी यह अभी young tech enthusiast ही होगा, और तब शायद और भी impressive projects कर पाएगा
तब तक यह बात शायद उतनी मशहूर न रहे कि इस उम्र में यह कितना आगे था। 20s में शुरू करके भी smart लोग impressive काम करते हैं, और उसी उम्र पर ज्यादातर observers को वे peers जैसे दिखेंगे
फिर भी यह early lead एक unfair advantage बन सकता है जिसे यह बनाए रख सकता है
कई सालों या दशकों बाद यह किसी तरह के “secret weapon” जैसा सामने आ सकता है
young programmers का code पढ़ना मुझे पसंद है। काफी high-level knowledge तो है, लेकिन अभी कई सालों का experience नहीं है—ऐसे में वे पूरी चीज़ को कैसे design करते हैं, यह देखना interesting होता है
author fast learner लगता है, और 6 महीने के काम के लिहाज से यह शानदार है
लगता है 17 साल के बच्चों को भी अभी पता है कि CD क्या होती है
floppy disk save icon को अभी retire न भी किया जाए तो चलेगा :P
अच्छा है। याद है, जब मैं उस उम्र का था तो Turbo Pascal में actual drawing code के लिए hand-optimized assembly लगाकर 2D graphics library बनाई थी
हालांकि वह internet खोजने से पहले की बात थी, इसलिए बनाना मजेदार था मगर वह कहीं इस्तेमाल न होने वाला personal project बनकर रह गया
personal project को उस अगले level तक ले जाना बढ़िया है जहाँ दूसरे लोग उसे देख सकें और शायद खुद इस्तेमाल भी कर सकें। कुल मिलाकर बहुत organized है, comments अच्छे हैं, और README साफ है
दुनिया के सामने publish करना डरावना हो सकता है, लेकिन याद रखना अच्छा होगा कि लोग जो कहते हैं, खासकर जब वह तुम्हारे बारे में हो, वह तुम्हारे काम जितना ही उनके अपने बारे में भी बताता है
वैसे सच कहूँ तो मुझे इस project से ज्यादा Motes में interest है, इसलिए अब उसे try करने जा रहा हूँ :)
Emacs plugin में अजीब behavior हो सकता है। फिर भी scripts पिछले कुछ हफ्तों से मेरे लिए perfectly काम कर रही हैं
उम्मीद है तुम्हें पसंद आएगा :D
शानदार
आज रात code clone करके देखूँगा
interests मिलते-जुलते हैं, इसलिए इस project में contribute करने की कोशिश करूँगा
ज्यादातर जगहों पर comments छोड़ रखे हैं, लेकिन पता नहीं वे सभी helpful होंगे या नहीं
debugger लिखना खास तौर पर tricky होता है, और यह काफी अच्छा है