我在Emacs中开发OCaml程序,在终端中编译并运行二进制文件。
可以在Emacs中回溯“failwith”错误,例如this post。但是大多数时候,当我在终端中执行二进制文件时,会出现“failwith”错误。除了
之外几乎没有其他信息my error message
Fatal error: exception Failure("my error message")
有谁知道是否有可能回溯那个?即,了解哪些.ml文件涉及此类执行?
答案 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
在这样的小例子中,内联器会使报告的用处不那么有用。在现实世界的节目中,它可能更有用。
(但它仍然可能没有你想要的那么详细。)