2008-09-28 38 views

回答

34

编译-g和设置环境变量OCAMLRUNPARAM = B

+1

对于本地代码,我相信这只适用于OCaml v3.10或更高版本。 – 2008-09-28 17:17:01

9

一些Printexc功能,让你这样做编程。

+2

具体`Printexc.record_backtrace true`。 – 2012-08-03 21:41:23

2

因为它看起来像你只能得到unix异常的痕迹,你可以在第二个过程中分叉和抛出异常。这样,主进程能够继续下去:

export OCAMLRUNPARAM=b 
# compile with -g 

flush_all(); let r = Unix.fork() in if r == 0 then raise Exit 
0

如果您正在使用Ocamlbuild,而不是直接调用编译器,你可以使用debug标签。从manual

随着OCamlbuild,你可以简单的调试标记添加到您的程序的目标,这将挑选出何时插入-g标志或没有。

例如,如果你正在建设一个文件foo.ml与包bar那么你_tags文件将有一行:

<foo.ml>: package(bar), debug 

这将插入相应-g标志,同时建立字节/本机文件。但是,您仍然需要使用export OCAMLRUNPARAM=b设置环境变量,如其他答案中所述。