Die Objective-Caml-Sprache erzeugt nur dann Stack-Traces, wenn Sie genau danach gefragt haben - was sind die Anforderungen für Bytecode und nativen Code?Wie bekomme ich einen Stack-Trace in OCaml?
Antwort
Compile mit -g und Umgebungsvariable OCAMLRUNPARAM = b
Einige Printexc Funktionen können Sie dies programmatisch tun.
Speziell 'Printex.record_backtrace wahr '. –
Da es so aussieht, als könnten Sie nur Traces für Exceptions unter Unix erhalten, können Sie forcieren und die Exception im zweiten Prozess auslösen. 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 anstatt direkt aufrufen Compiler, können Sie die debug
Tag verwenden. Vom manual:
Mit OCamlbuild, können Sie einfach die Ziele des Debug-Tag zu Ihrem Programm hinzufügen, und es wird in Ordnung bringen, wenn die Option -g oder nicht einfügen.
Zum Beispiel, wenn Sie eine Datei foo.ml
mit Paket Aufbau bar
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. Sie müssen die Umgebungsvariable jedoch weiterhin mithilfe von export OCAMLRUNPARAM=b
festlegen, wie in den anderen Antworten erwähnt.
- 1. Kann ich einen Stacktrace aus minimiertem Code mithilfe von Quellmaps in einen visuell lesbaren Stacktrace übersetzen?
- 2. Wie kopiere ich einen OCaml-Verschluss?
- 3. Wie bekomme ich eine Unterliste von einer Liste in ocaml
- 4. (OCaml) Wie bekomme ich ein Zeichen von einer Zeichenfolge?
- 5. Wie bekomme ich OCaml Syntax Highlighting auf VSCode?
- 6. Wie kann ich einen Ausdruck mit List.Map in OCAML überspringen?
- 7. Kann ich in PowerShell einen detaillierten Ausnahme-StackTrace erhalten?
- 8. OCaml - Wie konvertiere ich Int in String?
- 9. Wie bekomme ich einen Zeilenumbruch?
- 10. Wie bekomme ich einen IXmlNamespaceResolver?
- 11. Wie bekomme ich einen "Busfehler"?
- 12. Wie bekomme ich einen Zeigerwert in Haskell?
- 13. Wie bekomme ich einen Zeitstempel in Dart?
- 14. Wie bekomme ich einen Variablentyp in Typescript?
- 15. Wie bekomme ich einen Projektpfad in Java ..?
- 16. Wie bekomme ich einen Teilstring in C?
- 17. Wie bekomme ich einen Stücknamen in Knitr?
- 18. Wie Javascript stacktrace generieren?
- 19. Wie interpretieren Go stacktrace
- 20. Wie überschneide ich zwei Listen in OCaml?
- 21. Wie installiere ich corebuild in ocaml
- 22. Wie verwende ich ppx.metaquot in OCaml?
- 23. gprolog: Erhalten einen Stacktrace nach einer Ausnahme
- 24. Wie man einen OCaml Cross Compiler erstellt
- 25. Wie bekomme ich die Methodenaufrufhistorie?
- 26. Erhalten Sie einen längeren Stacktrace von FastMM?
- 27. In stacktrace schreiben
- 28. Wie kann ich den vollständigen StackTrace in Maven sehen?
- 29. Wie soll ich mein OCaml-Projekt organisieren?
- 30. Wie verbinde ich OCaml mit iPhone API?
Für nativen Code, glaube ich, dass dies nur für OCaml v3.10 oder später funktioniert. –