1

Debugging an OCaml program that has an unhandled exception is fairly easy, because the program stops running and you can obtain a backtrace by running in ocamldebug or setting the OCAMLRUNPARAM environment variable to b. Is there any way to obtain such a backtrace for a handled exception?

Note: Modifying the program so it does not handle the exception is of course one option. However, I'd like to avoid modifying the program if possible. Something analogous to gdb's catch command would be great.

4

1 に答える 1

2

Printexc.print_backtrace例外が発生した時点から例外が処理されている現在の時点までのスタックを示すバックトレースを出力する関数があります。これは役立つかもしれませんが、完全なスタック バックトレースを出力しないことに注意してください。

Unix.forkUnix ライクなシステムで完全なスタック バックトレースを出力するハック コードを書いたことがあります。スタック トレースの印刷に対する私の回答を参照してください。(このコードを本番環境で使用することはお勧めしません。)

于 2013-02-25T02:19:23.800 に答える