调试OCaml程序

在toplevel中,使用#trace命令

AZ0tPuXxCQ9IAAAAAElFTkSuQmCC

示例如下

gxDszdAAAAAElFTkSuQmCC

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

2011060921331766.png

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

2011060921363941.png

转载于:https://www.cnblogs.com/njucslzh/archive/2011/06/09/2076802.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值