2011-11-10 22 views
8

¿Qué se usa para rastrear y depurar en OCaml?Rastreo y depuración en OCaml

Para la depuración probé ocamldebug y el plugin de Emacs.

Para rastrear Quiero poder imprimir el constructor de datos de cada variable. Aquí se muestra un ejemplo de uso camlp4: http://caml.inria.fr/pub/docs/tutorial-camlp4/tutorial007.html#toc52

type colour = Red | Green | Blue 
    let print_colour = 
    function 
     Red -> print_string "Red" 
    | Green -> print_string "Green" 
    | Blue -> print_string "Blue" 
+0

No hay una forma incorporada de imprimir valores de un tipo definido por el usuario, pero hay algunos proyectos externos que resuelven el problema de varias maneras. Consulte esta página de preguntas de SO anterior: http://stackoverflow.com/questions/7518752/is-there-a-way-to-print-user-defined-datatypes-in-ocaml –

+0

Para el rastreo, el toplevel es la forma más fácil , si puede hacer sus experimentos en él (funciona bien para la depuración de la estructura de datos, no tan bien para E/S). – Gilles

Respuesta

9

ocamldebug funciona bien cuando se puede usar el código de bytes.

Si desea depurar una aplicación de código nativo, hay un patch by Thomas gazagnaire en Mantis que le permite pasar línea por línea en el programa OCaml usando gdb. Las partes de este parche deben integrarse en la próxima versión de OCaml (3.13 o 4.00).

Actualmente, sin embargo, no hay forma de imprimir los valores de OCaml, pero viene otro parche, usando GADT para definir una función de impresora genérica para cualquier tipo.

+0

Hola, ¿cuál es el estado del soporte de gdb/lldb a partir de 2015? – Antoine

+0

¿Qué es un archivo de código de bytes? Intenté todo y 'ocamldebug' dice" no es un archivo de código de bytes ". –