我试图得到一个堆栈跟踪与Printexc.get_backtrace
,但我得到一个错误:当-g应该用于在OCaml中打印堆栈轨迹?
(Program not linked with -g, cannot print stack backtrace)
我编译如下:
ocamlfind ocamlc -g -o foo ... $(FOO_OBJS)
FOO_OBJS与编译只是: ocamlc -c $OBJ
怎么了?是否每.cmo
编译与-g
?
如果在没有-g
编译的对象中发生异常,我会得到部分堆栈跟踪还是根本没有堆栈跟踪?
顺便说一句,所有库(cma和cmxa)都应该用-g编译,否则穷用户会得到不完整的堆栈回溯。 – 2012-02-23 18:41:58
你很幸运能够获得部分回溯,有时混合使用和不使用-g的模块会使回溯完全错误 - 请参阅PR#5074 – ygrek 2012-02-24 08:56:16
有一个可以设置的“OCAMLRUNPARAM = b”环境变量,这与如何相关? – Ptival 2012-02-24 11:56:44