在toplevel中,使用#trace命令

调试OCaml程序

示例如下

调试OCaml程序

这个用起来不太现实,我们除了教学,不会把程序写在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命令列出所有可用的命令

调试OCaml程序

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

调试OCaml程序

相关文章:

  • 2021-05-29
  • 2021-07-14
  • 2021-05-28
  • 2021-10-17
  • 2021-11-30
  • 2021-11-20
  • 2021-11-11
猜你喜欢
  • 2021-05-19
  • 2021-12-07
  • 2022-02-12
  • 2022-01-12
相关资源
相似解决方案