2 điểm bởi GN⁺ 2023-11-12 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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 printset có thể gắn bộ lọc bằng pipe (|); với dec, 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 Schemelibdwarf; sau khi clone cả submodule và chạy make, binary spray sẽ được tạo trong thư mục build
  • 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

 
GN⁺ 2023-11-12
Ý 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?

    • Mình từng ở trong hoàn cảnh tương tự khi còn nhỏ hơn, vào thời internet chưa có hoặc rất hạn chế, nên có thể trả lời
      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
    • Chủ yếu là nhờ sách và blog. Mình thích đọc rất nhiều
      Và bạn đoán đúng rồi, bố mình là nhà khoa học máy tính
    • Trong repository có liên kết tới một chuỗi blog rất hay hướng dẫn theo từng bước
    • Vì các quản lý kỹ thuật phần mềm, những người có khả năng cao là đã lâu không còn viết mã hữu ích, không chỉ tay năm ngón bảo kỹ sư phải làm gì
    • Làm mình nhớ tới cậu bé 15 tuổi đã cách mạng hóa việc mod game Half-Life bằng Metamod
      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

    • Cảm ơn vì đã cho biết về những dự án này. Mình hoàn toàn chưa từng biết cái nào cả
  • 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

    • Ban đầu mình học Python và C++. Đến một lúc nào đó mình chán C++ nên chuyển sang C
      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ị

    • Cảm ơn vì đường link. Mình lúc nào cũng tìm sách về compiler, nhưng nhiều khi khá khó kiếm
      Đá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

    • Mình cũng thấy ấn tượng. Đây thực sự là một lợi thế khởi đầu tuyệt vời
      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ó :)

    • Vài ngày trước mình dùng Motes thì phát hiện ra một số bug trong mã
      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

    • Nghe thật tuyệt. Nếu có câu hỏi gì về mã thì cứ liên hệ mình bất cứ lúc nào
      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

    • Cảm ơn. Đôi lúc nó cũng khá vất vả thật :D