¿Cómo puedo obtener un seguimiento de pila en OCaml?
El lenguaje Caml objetivo solo producirá trazas de pila si las solicita correctamente - ¿cuáles son los requisitos tanto para el código de bytes como para el código nativo?
4 answers
Compilar con-g y establecer la variable de entorno OCAMLRUNPARAM = b
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-28 13:56:53
Algunas funciones Printexc le permiten hacer esto mediante programación.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-02-01 15:05:16
Debido a que parece que solo puede obtener trazas de excepciones en unix, puede bifurcar y lanzar la excepción en el segundo proceso. De esta manera el proceso principal puede continuar:
export OCAMLRUNPARAM=b
# compile with -g
flush_all(); let r = Unix.fork() in if r == 0 then raise Exit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-23 00:54:04
Si está usando Ocamlbuild en lugar de invocar directamente al compilador, puede usar la etiqueta debug
. Del manual :
Con OCamlbuild, simplemente puede agregar la etiqueta de depuración a los destinos de su programa, y ordenará cuándo insertar la bandera-g o no.
Por ejemplo, si está construyendo un archivo foo.ml
con package bar
entonces su archivo _tags
tendrá una línea:
<foo.ml>: package(bar), debug
Esto insertará las banderas -g
apropiadas mientras se construye bytecode / archivos nativos. Sin embargo, todavía necesita establecer la variable de entorno usando export OCAMLRUNPARAM=b
como se mencionó en las otras respuestas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-30 03:23:25