Tôi đang cố gắng để có được một stacktrace với Printexc.get_backtrace
, nhưng tôi nhận được một lỗi:Khi nào -g nên được sử dụng để in dấu vết ngăn xếp trong OCaml?
(Program not linked with -g, cannot print stack backtrace)
Tôi đang soạn thảo như thế này:
ocamlfind ocamlc -g -o foo ... $(FOO_OBJS)
FOO_OBJS được biên soạn với chỉ: ocamlc -c $OBJ
Có vấn đề gì? Mỗi .cmo
có được biên dịch với -g
không?
Nếu ngoại lệ xảy ra trong một đối tượng được biên dịch mà không có -g
tôi sẽ nhận được một ngăn xếp từng phần hay không có ngăn xếp stacktrace?
Bằng cách này, tất cả các thư viện (cma và cmxa) phải được biên dịch bằng -g, nếu không thì người dùng kém sẽ nhận được backtraces ngăn xếp không đầy đủ. –
Bạn may mắn nhận được một phần backtrace, đôi khi trộn mô-đun có và không có -g làm cho backtraces hoàn toàn sai - xem PR # 5074 – ygrek
Có một biến môi trường 'OCAMLRUNPARAM = b' bạn có thể thiết lập, làm thế nào là có liên quan? – Ptival