SoftTimur
SoftTimur

Reputation: 5540

Is it possible to backtrace "failwith" error when executing a binary?

I develop OCaml programs in Emacs, compile and run the binary in the terminal.

It is possible to backtrace "failwith" error in Emacs like this post. But most of the time, "failwith" errors are raised when I execute a binary in the terminal. There is little information except

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

Does anyone know if it is possible to backtrace that? I.e., understanding which .ml files are involved in such an execution?

Upvotes: 3

Views: 96

Answers (1)

Jeffrey Scofield
Jeffrey Scofield

Reputation: 66823

If you compile with debugging support, you can ask for a backtrace with 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

In small examples like this, the inliner will make the report a little less useful. In real world programs it's probably more useful.

(But it still might not be as detailed as you'd like.)

Upvotes: 1

Related Questions