2008-09-28 26 views

Respuesta

34

compilar con OCAMLRUNPARAM variable de entorno -g y establecer = b

+1

Para el código nativo, creo que esto solo funciona para OCaml v3.10 o posterior. –

9

Algunos Printexc funciones le permiten hacer esto mediante programación.

+2

Específicamente 'Printexc.record_backtrace true'. –

2

Como parece que solo puede obtener rastros de las 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 
0

Si está utilizando Ocamlbuild en lugar de invocar el compilador directamente, puede utilizar la etiqueta debug. Desde el manual:

Con OCamlbuild, sólo tiene que añadir la etiqueta de depuración de los objetivos de su programa, y ​​va a resolver cuando para insertar la bandera -g o no.

Por ejemplo, si usted está construyendo un archivo con el paquete foo.mlbar entonces su archivo _tags tendrá una línea:

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

Esto insertará los -g banderas apropiadas, mientras que la construcción de los archivos de código de bytes/nativos. Sin embargo, aún necesita establecer la variable de entorno usando export OCAMLRUNPARAM=b como se menciona en las otras respuestas.

Cuestiones relacionadas