如果您恰好要求它,Objective Caml语言只会产生堆栈跟踪 - 字节码和本机代码的要求是什么?

有帮助吗?

解决方案

使用-g编译并设置环境变量OCAMLRUNPARAM = b

其他提示

某些 Printexc 功能可让您以编程方式执行此操作

因为看起来你只能在unix上获得异常的跟踪,你可以在第二个进程中派生并抛出异常。这样主要过程可以继续:

export OCAMLRUNPARAM=b
# compile with -g

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

如果您使用Ocamlbuild而不是直接调用编译器,则可以使用 debug 标记。来自手动

  

使用OCamlbuild,您只需将调试标记添加到您的程序目标中,它将解决何时插入-g标志的问题。

例如,如果要使用包 bar 构建文件 foo.ml ,那么 _tags 文件将有一行:

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top