Ich versuche, einen StackTrace mit Printexc.get_backtrace
zu bekommen, aber ich bekomme einen Fehler:
(Program not linked with -g, cannot print stack backtrace)
Ich kompiliere so:
ocamlfind ocamlc -g -o foo ... $(FOO_OBJS)
FOO_OBJS werden mit nur zusammengestellt:
ocamlc -c $OBJ
Was ist los? Sollte jedes .cmo
mit -g
kompiliert werden?
Wenn in einem Objekt, das ohne -g
kompiliert wurde, eine Exception auftritt, bekomme ich einen Teil-Stacktrace oder gar keinen Stacktrace?
Was ist los? Soll jedes .cmo mit -g?
kompiliert werden
Ja, Sie müssen die Option -g
zur Kompilierung und Verknüpfung hinzufügen. Sie können auch ocamldebug
verwenden, um das Programm mit dieser Option zu durchlaufen. Auch die Umgebungsvariable OCAMLRUNPARAM
muss auf b
gesetzt werden.
Wenn in einem Objekt, das ohne -g kompiliert wurde, eine Ausnahme auftritt, bekomme ich eine Partial Stacktrace oder gar kein Stacktrace?
Sie wetten! Ich erinnere mich ein paar Mal, dass ich die Option -g
vergessen hatte und die Rückverfolgung nur der Standardbibliothek entsprach.
Tags und Links compilation debugging functional-programming exception ocaml