调试OCaml程序

在toplevel中,使用#trace命令

示例如下

这个用起来不太现实,我们除了教学,不会把程序写在toplevel里面,而是写在文件里面,编译,执行。于是有了ocamldebug.

它可以单步执行,插入断点,察看、修改环境中的值,和别的调试器一样。

但是,这个工具只运行在Unix上,Ubuntu这些都可以

编译程序时加上-g选项,生成的.cmo文件含有调试必需的指令。只有bytecode compiler使用该选项。得到可执行文件后,进入debug模式,命令如下

ocamldebug [options ] executable [arguments ]

示例

建立两个文件

fact.ml

1 let fact n =
2 let rec fact_aux p q n =
3 if n = 0 then p
4 else fact_aux (p+q) p (n-1)
5 in
6 fact_aux 1 1 n;;

main.ml

1 let x = ref 4;;
2 let go () =
3 x := 5;
4 Fact.fact !x;;
5 Printf.printf "%d\n" (go ());;

编译

ocamlc -g *.ml

得到a.out执行文件。可以加上其他选项,一定要有-g并链接。

启动debug

ocamldebug a.out

help命令列出所有可用的命令



执行,追踪等,与用GDB调试C程序比较像,慢慢琢磨体会。

posted on 2011-06-09 21:39  小交响曲  阅读(1460)  评论(0编辑  收藏  举报

导航