HN công bố: Spray - trình gỡ lỗi C do một thiếu niên 17 tuổi đầu tư 6 tháng phát triển
(github.com/d4ckard)- Spray là trình gỡ lỗi nhỏ gọn cho mã C, một công cụ giữ tính năng đơn giản và dễ hiểu để điều khiển chương trình đang chạy cũng như kiểm tra, chỉnh sửa trạng thái của nó
- Các tính năng được hỗ trợ gồm breakpoint theo hàm, dòng trong tệp và địa chỉ; in và thiết lập biến, bộ nhớ theo địa chỉ và thanh ghi; tô sáng cú pháp C; backtrace; stepping theo lệnh, hàm và dòng; bộ lọc định dạng đầu ra của lệnh
- Các lệnh REPL gồm
print/set,break/delete,continue,next,step,leave,inst,backtrace, dùng để điều khiển thực thi và đọc/ghi giá trị - Sau
printvàsetcó thể gắn bộ lọc bằng pipe (|); vớidec,hex,addr,bits,bytes,deref/*, có thể hiển thị cùng một giá trị 64-bit ở các định dạng khác nhau hoặc dereference địa chỉ - Để build cần có CHICKEN Scheme và libdwarf; sau khi clone cả submodule và chạy
make, binaryspraysẽ được tạo trong thư mụcbuild - Binary mục tiêu để gỡ lỗi phải được biên dịch với cờ
-gđể chứa thông tin debug, và tốt nhất nên tắt tối ưu hóa để có đầu ra tốt nhất - Spray chỉ được kiểm thử với Clang; vì mỗi trình biên dịch tạo thông tin debug cho cùng một mã theo cách khác nhau, chương trình cần gỡ lỗi bằng Spray phải được biên dịch bằng
clang - Trong roadmap còn có in/chỉnh sửa cấu trúc phức hợp, tô sáng cú pháp cấu trúc phức hợp, backtrace dựa trên DWARF thay vì frame pointer, hàm inline, tải thư viện bên ngoài và bắt các signal được gửi đến chương trình mục tiêu đang gỡ lỗi
1 bình luận
Ý kiến trên Hacker News
Đặc biệt gọn gàng, nhất quán và được mô-đun hóa rất tốt, đồng thời xử lý những vấn đề đòi hỏi hiểu biết khá sâu về định dạng nhị phân và API kernel
Nhiều lập trình viên “senior” có lẽ còn khó mà tự làm được thứ như thế này ngay cả ở mức khái niệm, nên đây đúng là điều ngược lại hoàn toàn với kiểu “bọn trẻ ngày nay...”
Mình khá tò mò không biết một người 17 tuổi có được mức kiến thức này bằng cách nào. Là nhờ sách, bạn đồng trang lứa, câu lạc bộ lập trình hay bố mẹ là lập trình viên chăng?
Sự tò mò thuần túy cùng với điều kiện lớn là “đơn giản là có thể tiếp cận” phần cứng cần thiết, và chỉ với một ít sách cùng tạp chí thôi cũng có thể đi rất xa
Bố mẹ mình không phải lập trình viên, nhưng bố mình mua máy tính từ rất sớm vào năm 1984, và sau này còn mang các compiler như TurboPascal, C++ từ chỗ làm về nhà để mình thử nghiệm
Mình chủ yếu học qua tạp chí và sách, sau này có giao lưu đôi chút với những người cùng trang lứa trong giới làm demo, và cũng từng mua qua đường bưu điện các đĩa có chứa tài liệu (https://fr.wikipedia.org/wiki/DP_Tool_Club). Ví dụ như các tài liệu kiểu https://en.wikipedia.org/wiki/Ralf_Brown%27s_Interrupt_List
Mình lặp lại dần dần bằng cách làm những thứ nhỏ, từ bộ công cụ cửa sổ cho CGA, bản sao Tetris, bản sao Bomberman, phần mềm FFT, rồi cuối cùng tới cả render 3D thời gian thực bằng phần mềm thuần túy không có FPU như Phong rendering (https://github.com/thbar/demomaking#obez-1995)
Trong thế giới làm demo mình tình cờ gặp những thiếu niên khác cũng đang làm những việc tương tự, nên mình không hẳn là một trường hợp cá biệt hoàn toàn bị cô lập
Ngày nay, một đứa trẻ tò mò nếu được khuyến khích đúng cách thì có lẽ còn có thể đi xa hơn rất nhiều
Và bạn đoán đúng rồi, bố mình là nhà khoa học máy tính
Có những đứa trẻ thật sự rất phi thường. Hồi tuổi đó mình học C++ đến phát khóc vì nản
Tuyệt vời. Ước gì hồi nhỏ mình cũng có mức cống hiến như thế này
Mình khuyên nên thử tham gia các chương trình như Google Summer of Code, KDE Season of Code, Linux Foundation LFX, X.org EVoC
Có rất nhiều vấn đề thú vị đáng để giải quyết. Ước gì hồi còn là sinh viên mình đã biết tới những thứ này, còn bây giờ mình làm toàn thời gian nên không có thời gian đóng góp cho mã nguồn mở
Chúc bạn tiếp tục phát huy
Mình vừa lướt qua dự án lần đầu và thấy nó được tổ chức rất tốt. Xuất sắc
Mình tò mò không biết bạn đã lập trình bao lâu rồi và bắt đầu bằng ngôn ngữ nào. Mình còn biết kha khá lập trình viên nhiều tuổi hơn hàng chục năm mà vẫn chưa dùng nổi Makefile[1]
Mình cũng tò mò ý đồ của các emoji inline trong mã nguồn là gì. Giờ mấy bạn trẻ ngầu đều làm vậy à, hay là để mọi người chú ý hơn tới việc có đầu vào không phải ASCII?
[1]: Còn nhiều người hơn nữa là không dùng hoặc không hiểu các target được tạo động
Mấy emoji đó chỉ là trò đùa mình làm khoảng một tuần thôi. Có vẻ bên phía Rust người ta dùng emoji thường xuyên hơn nhiều. Mình cũng không cố xóa chúng đi
Mình thấy emoji con bọ quanh PID khá vui. Mấy cái trong comment thì có thể một ngày nào đó sẽ biến mất. Dù vậy tới giờ mình chưa gặp vấn đề gì với editor, Helix, Emacs và VSCode đều hoạt động tốt
Mình cũng đang nghĩ xem có nên tắt cả việc in emoji ra stdout trong REPL khi terminal color bị tắt hay không
Xin chúc mừng, và chúc may mắn với các dự án của bạn
Compiler là một trong những hang thỏ đầu tiên khiến mình hứng thú với máy tính
Một trong những cuốn sách mình đã đọc đi đọc lại vô số lần hiện nay được phát hành miễn phí, tuy không phải về debug mà về compiler, nhưng có thể đáng để đưa vào danh sách đọc
“Compiler Design in C”
https://holub.com/compiler/
Đây là một cuốn sách khá cũ nhưng có thể sẽ thú vị
Đáng tiếc là nhiều cuốn sách lại quá hàn lâm kiểu tháp ngà
Thật rất ấn tượng khi mới 17 tuổi mà đã có mức kiến thức và sự chín chắn như thế này
Những chủ đề được xử lý và thử nghiệm là loại nội dung thường được kỳ vọng ở bậc đại học, và ngay trong số đó thì dự án này cũng gần mức của một môn cao học
Xin bày tỏ sự kính trọng và chúc bạn có một sự nghiệp thành công
Vài năm nữa bạn vẫn sẽ còn là một người trẻ đam mê công nghệ, và khi đó rất có thể sẽ làm ra những dự án còn ấn tượng hơn nữa
Đến lúc ấy, việc bạn đã đi trước bao xa ở độ tuổi này có thể sẽ không còn được biết đến nhiều. Có những người thông minh bắt đầu ở tuổi 20 rồi vẫn làm được những việc ấn tượng, và khi đến cùng một độ tuổi thì trong mắt đa số người quan sát họ sẽ trông như những đồng nghiệp ngang hàng
Dù vậy, lợi thế khởi đầu này vẫn có thể trở thành một ưu thế không công bằng mà bạn tiếp tục duy trì được
Sau nhiều năm hay thậm chí nhiều thập kỷ, nó có thể lộ ra như một kiểu “vũ khí bí mật” nào đó
Mình thích đọc mã của các lập trình viên trẻ. Rất thú vị khi xem họ thiết kế tổng thể ra sao trong trạng thái đã có mức kiến thức khá cao nhưng vẫn chưa có nhiều năm kinh nghiệm
Tác giả trông giống một người học rất nhanh, và với kết quả của 6 tháng làm việc thì đây là quá xuất sắc
Có vẻ các lập trình viên 17 tuổi vẫn còn biết CD là gì
Có lẽ chưa cần bỏ biểu tượng lưu hình đĩa mềm đâu :P
Hay đấy. Hồi ở tuổi đó mình nhớ là đã làm một thư viện đồ họa 2D cho Turbo Pascal, trong đó phần vẽ thực tế được chèn bằng assembly tối ưu thủ công
Chỉ là chuyện đó diễn ra trước khi mình biết tới internet, nên dù làm rất vui nhưng cuối cùng nó chỉ là dự án cá nhân không đi tới đâu cả
Điều đáng khen là bạn đã đi tiếp tới bước phát triển một dự án cá nhân thành thứ mà người khác có thể nhìn thấy và thậm chí có thể trực tiếp dùng. Tổng thể rất gọn gàng, comment tốt và README cũng rõ ràng
Việc đưa sản phẩm ra trước thế giới có thể đáng sợ, nhưng sẽ tốt nếu nhớ rằng những gì người khác nói, đặc biệt khi điều đó là về bạn, cũng phản ánh chính họ nhiều không kém gì phản ánh công việc của bạn
Nói thêm thì thật ra mình còn hứng thú với Motes hơn cả dự án này, nên giờ mình sẽ thử nghịch nó :)
Trong plugin Emacs có thể có hành vi hơi lạ. Nhưng các script thì trong vài tuần gần đây với mình vẫn hoạt động hoàn hảo
Hy vọng bạn sẽ thích nó :D
Tuyệt
Tối nay mình sẽ clone mã về để xem thử
Vì có cùng mối quan tâm nên mình muốn thử đóng góp cho dự án này
Mình đã để comment ở hầu hết các chỗ, nhưng không chắc tất cả có đều hữu ích không
Debugger đặc biệt khó viết, mà cái này khá tốt đấy