调试OCaml程序
时间:2011-06-09 来源:垂钓玄武
在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程序比较像,慢慢琢磨体会。
相关阅读 更多 +