是否可以在OCaml中中断处理的异常?

时间:2013-02-25 02:13:12

标签: debugging ocaml

调试具有未处理异常的OCaml程序非常简单,因为程序停止运行,您可以通过在ocamldebug中运行或将OCAMLRUNPARAM环境变量设置为{{1}来获取回溯}。有没有办法为处理异常获得这样的回溯?

注意:修改程序以使其不处理异常当然是一种选择。但是,如果可能的话,我想避免修改程序。类似于b的{​​{1}}命令的东西会很棒。

1 个答案:

答案 0 :(得分:2)

有一个函数Printexc.print_backtrace将打印一个回溯,显示从异常被提升到处理异常的当前点的堆栈。这可能有所帮助,但请注意它不会打印完整的堆栈回溯。

我曾经使用Unix.fork编写了一些hacky代码,它在类Unix系统上打印完整的堆栈回溯。请参阅我对printing stack traces的回答。 (我不建议在生产中使用此代码。)