我試圖得到一個堆棧跟蹤與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