2011-11-10 94 views
8

你在OCaml中使用什麼進行跟蹤和調試?OCaml中的跟蹤和調試

爲了調試,我嘗試了ocamldebug和Emacs插件。

用於跟蹤我希望能夠打印每個變量的數據構造函數。 使用Camlp4一個例子如下所示: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

有沒有內置的方式來打印用戶定義類型的值,但有一些外部項目以各種方式解決問題。請參閱此前的SO問題頁面:http://stackoverflow.com/questions/7518752/is-there-a-way-to-print-user-defined-datatypes-in-ocaml –

+0

對於跟蹤,頂級是最簡單的方法,如果你可以在其中進行實驗(適用於數據結構調試,不太適合I/O)。 – Gilles

回答

9

ocamldebug正常工作時可以使用的字節碼。

如果您想調試本機代碼應用程序,Mantis上有一個patch by Thomas gazagnaire,允許在使用gdb的OCaml程序中逐行執行。這個補丁的一部分應該集成到OCaml(3.13或4.00)的下一個版本中。

但是,目前無法打印OCaml值,但是另一個補丁即將出現,使用GADT爲任何類型定義通用打印機功能。

+0

嗨,截至2015年,gdb/lldb支持的狀態如何? – Antoine

+0

什麼是字節碼文件?我嘗試了一切,'ocamldebug'說「不是字節碼文件」。 –