我可以知道有经验的 OCaml 开发人员如何调试他的代码吗?
我正在做的只是使用Printf.printf
. 这太麻烦了,因为当我需要干净的输出时,我必须将它们全部注释掉。
我应该如何更好地控制这个调试过程?特殊注释来打开logging
或关闭它们?
谢谢
我可以知道有经验的 OCaml 开发人员如何调试他的代码吗?
我正在做的只是使用Printf.printf
. 这太麻烦了,因为当我需要干净的输出时,我必须将它们全部注释掉。
我应该如何更好地控制这个调试过程?特殊注释来打开logging
或关闭它们?
谢谢
OCaml 调试器有一个您可能不知道的功能,它在有状态编程中并不常见,称为时间旅行。请参阅第16.4.4节。基本上,由于每一步的所有信息都保存在堆栈中,通过在处理过程中保存与每个步骤相关的更改,人们可以及时浏览更改以查看该步骤中的值。将其视为运行程序,将每个步骤的所有值记录到数据存储中,然后根据步骤编号索引到该数据存储中以查看该步骤的值。
您还可以使用ocp-ppx-debug
which 将添加一个printf
具有良好位置的位置,而不是手动添加它们。
https://github.com/OCamlPro-Couderc/ocp-ppx-debug