Debugging 是否可以回溯;用“失败”;执行二进制文件时出错?

Debugging 是否可以回溯;用“失败”;执行二进制文件时出错?,debugging,ocaml,Debugging,Ocaml,我在Emacs中开发OCaml程序,在终端中编译并运行二进制文件 可以回溯Emacs中的“failwith”错误,如。但大多数情况下,当我在终端中执行二进制文件时,会出现“failwith”错误。除此之外,几乎没有其他信息 my error message Fatal error: exception Failure("my error message") 有人知道有没有可能回溯到这一点吗?也就是说,了解这种执行涉及哪些.ml文件?如果使用调试支持进行编译,则可以使用OCAMLRUNPARAM

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

可以回溯Emacs中的“failwith”错误,如。但大多数情况下,当我在终端中执行二进制文件时,会出现“failwith”错误。除此之外,几乎没有其他信息

my error message
Fatal error: exception Failure("my error message")

有人知道有没有可能回溯到这一点吗?也就是说,了解这种执行涉及哪些.ml文件?

如果使用调试支持进行编译,则可以使用
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
在像这样的小例子中,内联线会使报告变得不那么有用。在现实世界的程序中,它可能更有用

(但它可能仍然没有您希望的那么详细。)

您也可以在程序开始时调用,而不是使用环境变量。无论哪种方式都需要
-g