เปิดตัวบน HN: Spray - ดีบักเกอร์ C ที่เด็กอายุ 17 ปีลงทุนพัฒนาเป็นเวลา 6 เดือน
(github.com/d4ckard)- Spray คือ ดีบักเกอร์ขนาดเล็กสำหรับโค้ด C ที่คงความสามารถไว้ให้เรียบง่ายและเข้าใจง่าย เป็นเครื่องมือสำหรับควบคุมโปรแกรมที่กำลังรันอยู่ รวมถึงตรวจสอบและแก้ไขสถานะของมัน
- ความสามารถที่รองรับได้แก่ เบรกพอยต์ ตามฟังก์ชัน บรรทัดในไฟล์ และแอดเดรส, การแสดงผลและตั้งค่าตัวแปร หน่วยความจำตามแอดเดรส และรีจิสเตอร์, การไฮไลต์ไวยากรณ์ C, backtrace, การสเต็ปทีละคำสั่ง ทีละฟังก์ชัน และทีละบรรทัด, รวมถึงตัวกรองรูปแบบผลลัพธ์ของคำสั่ง
- คำสั่ง REPL ได้แก่
print/set,break/delete,continue,next,step,leave,inst,backtraceสำหรับควบคุมการทำงานและอ่าน/เขียนค่า - หลัง
printและsetสามารถต่อฟิลเตอร์ด้วย pipe (|) ได้ โดยใช้dec,hex,addr,bits,bytes,deref/*เพื่อแสดงค่า 64 บิตเดียวกันในรูปแบบต่าง ๆ หรือทำการ dereference แอดเดรส - การบิลด์ต้องใช้ CHICKEN Scheme และ libdwarf จากนั้นโคลนให้รวม submodule แล้วรัน
makeก็จะได้ไบนารีsprayในไดเรกทอรีbuild - ไบนารีเป้าหมายที่จะดีบักต้องคอมไพล์พร้อมข้อมูลดีบักด้วยแฟลก
-gและควรปิดการทำ optimization เพื่อให้ได้ผลลัพธ์ที่ดีที่สุด - Spray ถูก ทดสอบกับ Clang เท่านั้น และเนื่องจากคอมไพเลอร์แต่ละตัวสร้างข้อมูลดีบักสำหรับโค้ดเดียวกันต่างกัน โปรแกรมที่จะดีบักด้วย Spray จึงต้องคอมไพล์ด้วย
clang - ในโรดแมปยังมีงานที่เหลือ เช่น การแสดงผลและแก้ไขโครงสร้างข้อมูลแบบประกอบ, การไฮไลต์ไวยากรณ์ของโครงสร้างข้อมูลแบบประกอบ, backtrace แบบอิง DWARF แทน frame pointer, inline function, การโหลดไลบรารีภายนอก, และการดักจับสัญญาณที่ส่งไปยังโปรแกรมเป้าหมายที่กำลังดีบัก
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
โดยเฉพาะอย่างยิ่ง มันดูสะอาด สม่ำเสมอ และมีการทำให้เป็น โมดูล อย่างดี อีกทั้งยังจัดการกับปัญหาที่ต้องอาศัยความรู้ค่อนข้างลึกเกี่ยวกับฟอร์แมตไบนารีและ API ของเคอร์เนล
โปรแกรมเมอร์ “ซีเนียร์” จำนวนมากคงทำอะไรแบบนี้ได้ยากแม้แค่ในระดับแนวคิด นี่จึงเป็นขั้วตรงข้ามของคำว่า “เด็กสมัยนี้…” เลย
อยากรู้จริง ๆ ว่าเด็กอายุ 17 ได้ความรู้ระดับนี้มาได้อย่างไร หนังสือ เพื่อนวัยเดียวกัน ชมรมโปรแกรมมิง พ่อแม่ที่เป็นโปรแกรมเมอร์ อะไรทำนองนั้นหรือเปล่า?
แค่มี ความอยากรู้อยากเห็นล้วน ๆ บวกกับเงื่อนไขสำคัญอย่าง “เข้าถึงได้เฉย ๆ” กับฮาร์ดแวร์ที่จำเป็น และมีหนังสือกับนิตยสารบ้าง ก็ไปได้ไกลพอสมควรแล้ว
พ่อแม่ผมไม่ได้เป็นโปรแกรมเมอร์ แต่พ่อซื้อคอมพิวเตอร์ค่อนข้างเร็วในปี 1984 และต่อมาก็นำคอมไพเลอร์อย่าง TurboPascal, C++ จากที่ทำงานกลับมาที่บ้านให้ผมได้ทดลอง
ผมเรียนรู้หลัก ๆ จากนิตยสารและหนังสือ ต่อมาจึงได้ติดต่อกับเพื่อนวัยเดียวกันในสายทำเดโมอยู่บ้าง และยังเคยสั่งซื้อดิสก์ที่มีเอกสารทางไปรษณีย์ (https://fr.wikipedia.org/wiki/DP_Tool_Club) เช่นข้อมูลอย่าง https://en.wikipedia.org/wiki/Ralf_Brown%27s_Interrupt_List
ผมทำของเล็ก ๆ แล้วค่อย ๆ ทำซ้ำไปเรื่อย ๆ ตั้งแต่ชุดเครื่องมือวินโดว์สำหรับ CGA, โคลน Tetris, โคลน Bomberman, ซอฟต์แวร์ FFT จนสุดท้ายทำ การเรนเดอร์ 3D แบบเรียลไทม์ อย่าง Phong rendering ได้ด้วยซอฟต์แวร์ล้วน ๆ โดยไม่มี FPU (https://github.com/thbar/demomaking#obez-1995)
ในโลกของการทำเดโม ผมบังเอิญได้เจอวัยรุ่นคนอื่น ๆ ที่ทำเรื่องเดียวกันอยู่ ดังนั้นผมก็ไม่ใช่กรณีพิเศษที่โดดเดี่ยวโดยสิ้นเชิง
ทุกวันนี้ เด็กที่มีความอยากรู้อยากเห็นน่าจะไปได้ไกลกว่านั้นมาก หากความอยากรู้นั้นได้รับการส่งเสริมอย่างเหมาะสม
และคุณเดาถูก พ่อผมเป็นนักวิทยาการคอมพิวเตอร์
เด็กบางคนนี่สุดยอดจริง ๆ ตอนอายุเท่านั้น ผมยังร้องไห้เพราะท้อกับการเรียน C++ อยู่เลย
เจ๋งมาก ตอนเด็ก ๆ ถ้าผมมี ความทุ่มเท ระดับนี้ก็คงดี
แนะนำให้ลองเข้าร่วมโปรแกรมอย่าง Google Summer of Code, KDE Season of Code, Linux Foundation LFX, X.org EVoC
มีปัญหาน่าสนใจให้แก้เยอะมาก ตอนเป็นนักศึกษาถ้ารู้เรื่องพวกนี้ก็คงดี แต่ตอนนี้ผมทำงานเต็มเวลาแล้วเลยไม่มีเวลามีส่วนร่วมกับโอเพนซอร์ส
ขอให้ทำได้ดีต่อไป
เพิ่งไล่ดูโปรเจกต์ครั้งแรก ดูจัดระเบียบดีมาก ยอดเยี่ยม
อยากรู้ว่าเขียนโปรแกรมมานานแค่ไหนแล้ว และเริ่มด้วยภาษาอะไร ผมรู้จักนักพัฒนาที่อายุมากกว่าหลายสิบปีอยู่ไม่น้อยที่ยังใช้ Makefile ไม่เป็นเลย[1]
อยากรู้ว่าอีโมจิแบบอินไลน์ในซอร์สมีเจตนาอะไร เด็กเท่ ๆ สมัยนี้เขาทำกันหมดหรือเปล่า หรือทำเพื่อให้ตระหนักถึงอินพุตที่ไม่ใช่ ASCII?
[1]: คนที่ใช้หรือเข้าใจ target ที่สร้างแบบไดนามิกไม่ได้มีมากกว่านั้นอีก
อีโมจิเป็นเหมือนมุกเล่น ๆ ที่ทำอยู่ประมาณสัปดาห์หนึ่ง ผมรู้สึกว่าในฝั่ง Rust เห็นอีโมจิบ่อยกว่านี้มาก เลยไม่ได้ตั้งใจลบออก
อีโมจิรูปแมลงแถว ๆ PID ผมว่าตลกดี ส่วนที่อยู่ในคอมเมนต์อาจหายไปสักวันหนึ่งก็ได้ แต่จนถึงตอนนี้ยังไม่เจอปัญหากับเอดิเตอร์ และ Helix, Emacs, VSCode ก็ทำงานได้ดีทั้งหมด
ผมกำลังคิดอยู่ว่าถ้าปิดสีของเทอร์มินัล ก็ควรปิดการพิมพ์อีโมจิออก stdout ใน REPL ไปด้วยหรือไม่
ขอแสดงความยินดี และขอให้โชคดีกับโปรเจกต์ต่าง ๆ
คอมไพเลอร์ เป็นหนึ่งในโพรงกระต่ายแรก ๆ ที่ทำให้ผมสนใจคอมพิวติง
หนึ่งในหนังสือที่ผมอ่านซ้ำไปซ้ำมาหลายครั้ง ตอนนี้เปิดให้อ่านฟรีแล้ว แม้จะเป็นเรื่องคอมไพเลอร์ไม่ใช่ดีบักกิง แต่ก็น่าจะใส่ไว้ในลิสต์อ่านได้
“Compiler Design in C”
https://holub.com/compiler/
เป็นหนังสือค่อนข้างเก่า แต่อาจน่าสนใจ
น่าเสียดายที่หนังสือจำนวนมากค่อนข้างเป็นแบบ หอคอยงาช้าง เกินไป
อายุ 17 แต่มี ความรู้และวุฒิภาวะ ระดับนี้ น่าประทับใจมาก
หัวข้อที่หยิบมาทำและทดลองเป็นสิ่งที่คาดหวังกันในระดับปริญญาตรี และภายในนั้น โปรเจกต์นี้ก็ใกล้ระดับวิชาปริญญาโทด้วยซ้ำ
ขอคารวะ และขอให้มีอาชีพการงานที่ประสบความสำเร็จ
อีกไม่กี่ปีเขาก็ยังเป็นคนรักเทคโนโลยีอายุน้อยอยู่ และตอนนั้นมีโอกาสสูงว่าจะทำโปรเจกต์ที่น่าประทับใจยิ่งกว่านี้ได้
เมื่อถึงจุดนั้น คนอาจไม่รู้กันมากนักว่าเขานำหน้าแค่ไหนในวัยนี้ เพราะก็มีคนฉลาดที่เริ่มตอนอายุ 20 กว่า ๆ แล้วทำงานน่าประทับใจได้เหมือนกัน และพออายุเท่ากัน คนสังเกตส่วนใหญ่ก็คงมองว่าเป็นเพื่อนร่วมรุ่น
ถึงอย่างนั้น ข้อได้เปรียบตั้งแต่ต้นนี้อาจกลายเป็นข้อได้เปรียบที่ไม่แฟร์ซึ่งรักษาไว้ได้ต่อเนื่อง
หลายปีหรือหลายสิบปีต่อมา มันอาจเผยตัวออกมาเหมือน “อาวุธลับ” บางอย่าง
ผมชอบอ่านโค้ดของโปรแกรมเมอร์อายุน้อย น่าสนใจดีที่ได้เห็นว่าคนที่มีความรู้ระดับค่อนข้างสูง แต่ยังไม่มีประสบการณ์หลายปี ออกแบบภาพรวมอย่างไร
ผู้เขียนดูเหมือนเป็น คนเรียนรู้เร็ว และสำหรับผลงานจากการทำ 6 เดือน ถือว่ายอดเยี่ยม
ดูเหมือนว่าเด็กอายุ 17 ก็ยังรู้ว่า CD คืออะไร
ไอคอนบันทึกรูปฟลอปปีดิสก์ อาจยังไม่ต้องปลดระวางก็ได้ :P
ดีมาก ตอนผมอายุเท่านั้น ผมจำได้ว่าเคยทำ ไลบรารีกราฟิก 2D ใน Turbo Pascal โดยแทรกโค้ดวาดจริงที่เป็นแอสเซมบลีปรับแต่งด้วยมือเข้าไป
แต่ตอนนั้นเป็นก่อนที่ผมจะค้นพบอินเทอร์เน็ต ดังนั้นแม้จะสนุกที่ได้ทำ แต่มันก็จบลงเป็นโปรเจกต์ส่วนตัวที่ไม่มีใครเอาไปใช้
ยอดเยี่ยมที่ก้าวไปถึงขั้นถัดไป คือทำให้โปรเจกต์ส่วนตัวพัฒนาเป็นสิ่งที่คนอื่นมองเห็นและอาจนำไปใช้เองได้ โดยรวมแล้วจัดระเบียบดีมาก มีคอมเมนต์ดี และ README ก็ชัดเจน
การเผยแพร่ให้โลกเห็นอาจน่ากลัว แต่จำไว้ก็ดีว่า สิ่งที่ผู้คนพูด โดยเฉพาะเมื่อเป็นคำพูดเกี่ยวกับคุณ มักบอกอะไรเกี่ยวกับตัวพวกเขาเองพอ ๆ กับที่บอกเกี่ยวกับงานของคุณ
อนึ่ง จริง ๆ แล้วผมสนใจ Motes มากกว่าโปรเจกต์นี้ ตอนนี้เลยจะลองเล่นดู :)
ในปลั๊กอิน Emacs อาจมีพฤติกรรมแปลก ๆ ได้ แต่สคริปต์ต่าง ๆ ทำงานได้สมบูรณ์แบบสำหรับผมตลอดช่วงไม่กี่สัปดาห์ที่ผ่านมา
หวังว่าจะชอบนะครับ :D
เจ๋ง
คืนนี้จะโคลนโค้ดมาดู
ผมมีความสนใจคล้ายกัน เลยตั้งใจจะลอง มีส่วนร่วม กับโปรเจกต์นี้
ผมใส่คอมเมนต์ไว้ในตำแหน่งส่วนใหญ่แล้ว แต่ไม่แน่ใจว่าจะช่วยได้ทั้งหมดหรือเปล่า
ดีบักเกอร์ เป็นสิ่งที่เขียนยากเป็นพิเศษ แต่นี่ทำออกมาได้ค่อนข้างดี