2011-11-10 16 views
8

Bạn sử dụng gì để truy tìm và gỡ lỗi trong OCaml?Truy tìm và gỡ lỗi trong OCaml

Để gỡ lỗi, tôi đã thử ocamldebug và plugin Emacs.

Để truy tìm, tôi muốn có thể in hàm tạo dữ liệu của mọi biến. Một ví dụ sử dụng Camlp4 được hiển thị ở đây: http://caml.inria.fr/pub/docs/tutorial-camlp4/tutorial007.html#toc52

type colour = Red | Green | Blue 
    let print_colour = 
    function 
     Red -> print_string "Red" 
    | Green -> print_string "Green" 
    | Blue -> print_string "Blue" 
+0

Không có cách tích hợp để in các giá trị của loại do người dùng xác định, nhưng có một số dự án bên ngoài giải quyết vấn đề theo nhiều cách khác nhau. Xem trang SO câu hỏi trước đó: http://stackoverflow.com/questions/7518752/is-there-a-way-to-print-user-defined-datatypes-in-ocaml –

+0

Để truy tìm, toplevel là cách dễ nhất , nếu bạn có thể thực hiện thí nghiệm của bạn trong đó (hoạt động tốt để gỡ lỗi cấu trúc dữ liệu, không tốt cho I/O). – Gilles

Trả lời

9

ocamldebug hoạt động tốt khi bạn có thể sử dụng bytecode.

Nếu bạn muốn gỡ lỗi ứng dụng mã gốc, có patch by Thomas gazagnaire trên Mantis cho phép từng bước từng dòng trong chương trình OCaml bằng gdb. Các phần của bản vá này nên được tích hợp trong phiên bản tiếp theo của OCaml (3.13 hoặc 4.00).

Hiện tại, không có cách nào để in giá trị OCaml, nhưng một bản vá khác sắp tới, sử dụng GADT để xác định chức năng máy in chung cho mọi loại.

+0

Xin chào, trạng thái của hỗ trợ gdb/lldb, tính đến năm 2015 là gì? – Antoine

+0

Tệp bytecode là gì? Tôi đã thử mọi thứ và 'ocamldebug' nói" không phải là tệp bytecode ". –