我正在尝试使用Printexc.get_backtrace
获取堆栈跟踪,但我收到错误:
(Program not linked with -g, cannot print stack backtrace)
我正在编译:
ocamlfind ocamlc -g -o foo ... $(FOO_OBJS)
FOO_OBJS编译为:
ocamlc -c $OBJ
怎么了?是否应该使用.cmo
编译每个-g
?
如果在没有-g
的情况下编译的对象发生异常,我会得到部分堆栈跟踪,还是根本没有堆栈跟踪?
答案 0 :(得分:9)
怎么了?是否应该使用-g?
编译每个.cmo
是的,您必须在编译和链接中添加-g
选项。您也可以使用ocamldebug
在此选项上单步执行该程序。此外,环境变量OCAMLRUNPARAM
必须设置为b
。
你打赌!我记得有几次我忘记了如果在没有-g编译的对象中发生异常,我会得到一个 部分堆栈跟踪,还是根本没有堆栈跟踪?
-g
选项,后面的跟踪只是标准库。