Frage

Das Ziel Caml Sprache wird nur Stack-Traces erzeugen, wenn Sie fragen, für sie genau richtig - was sind die Voraussetzungen für beide Bytecode und nativen Code

War es hilfreich?

Lösung

Übersetzen mit -g und Umgebungsvariable OCAMLRUNPARAM = b

Andere Tipps

Einige Printexc Funktionen können Sie tun dies programmatisch .

Weil es sieht aus wie Sie nur Spuren für Ausnahmen auf Unix erhalten Sie Gabel und die Ausnahme in dem zweiten Prozess werfen. Auf diese Weise der Hauptprozess fortgesetzt werden kann:

export OCAMLRUNPARAM=b
# compile with -g

flush_all(); let r = Unix.fork() in if r == 0 then raise Exit

Wenn Sie mit Ocamlbuild stattdessen Compiler direkt von Aufrufen können Sie den debug Tag verwenden. Aus dem Handbuch :

  

Mit OCamlbuild, können Sie einfach den Debug-Tag Ihres Programms Ziele hinzuzufügen, und es wird in Ordnung bringen, wenn die Option -g oder nicht eingefügt werden soll.

Zum Beispiel, wenn Sie eine Datei foo.ml mit Paket bar bauen dann _tags Datei eine Zeile haben:

<foo.ml>: package(bar), debug

Dadurch werden die entsprechenden -g Flaggen einsetzen, während Bytecode / native Dateien zu bauen. Allerdings müssen Sie noch die Umgebungsvariable mit export OCAMLRUNPARAM=b setzen, wie in den anderen Antworten erwähnt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top