Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 如何正确调试OCaml代码?_Functional Programming_Ocaml - Fatal编程技术网

Functional programming 如何正确调试OCaml代码?

Functional programming 如何正确调试OCaml代码?,functional-programming,ocaml,Functional Programming,Ocaml,我能知道有经验的OCaml开发人员是如何调试代码的吗? 我所做的只是使用Printf.Printf。这太麻烦了,因为当我需要一个干净的输出时,我不得不把它们全部注释掉 如何更好地控制此调试过程?用于打开或关闭日志记录的特殊注释 谢谢您可以用于此目的。这是一个语法扩展 顺便说一句,Ocaml有一个真正的功能。Ocaml调试器有一个您可能不知道的功能,这在有状态编程中并不常见,称为时间旅行。见第节。基本上,由于一个步骤到另一个步骤的所有信息都保存在堆栈上,因此通过在处理过程中保存与每个步骤相关联的更

我能知道有经验的OCaml开发人员是如何调试代码的吗?

我所做的只是使用
Printf.Printf
。这太麻烦了,因为当我需要一个干净的输出时,我不得不把它们全部注释掉

如何更好地控制此调试过程?用于打开或关闭
日志记录的特殊注释

谢谢

您可以用于此目的。这是一个语法扩展


顺便说一句,Ocaml有一个真正的功能。

Ocaml调试器有一个您可能不知道的功能,这在有状态编程中并不常见,称为时间旅行。见第节。基本上,由于一个步骤到另一个步骤的所有信息都保存在堆栈上,因此通过在处理过程中保存与每个步骤相关联的更改,可以及时浏览更改以查看该步骤中的值。可以将其视为运行程序,将每个步骤的所有值记录到数据存储中,然后根据步骤编号索引到该数据存储中,以查看该步骤的值。

您也可以使用
ocp ppx debug
,它将添加一个
printf
,而不是手动添加它们

https://github.com/OCamlPro-Couderc/ocp-ppx-debug