执行二进制文件时是否可以回溯“failwith”错误?

时间:2016-02-27 02:14:20

标签: debugging ocaml

我在Emacs中开发OCaml程序,在终端中编译并运行二进制文件。

可以在Emacs中回溯“failwith”错误,例如this post。但是大多数时候,当我在终端中执行二进制文件时,会出现“failwith”错误。除了

之外几乎没有其他信息
my error message
Fatal error: exception Failure("my error message")

有谁知道是否有可能回溯那个?即,了解哪些.ml文件涉及此类执行?

1 个答案:

答案 0 :(得分:1)

如果使用调试支持进行编译,则可以要求使用OCAMLRUNPARAM=b进行回溯。

$ cat bt.ml
let g x = failwith "error"

let f x = g x

let main () = f 14

let () = main ()
$ ocamlopt -g -o bt bt.ml
$ OCAMLRUNPARAM=b bt
Fatal error: exception Failure("error")
Raised at file "pervasives.ml", line 30, characters 22-33
Called from file "bt.ml", line 7, characters 9-16

在这样的小例子中,内联器会使报告的用处不那么有用。在现实世界的节目中,它可能更有用。

(但它仍然可能没有你想要的那么详细。)