我对用于诊断大规模功能程序中的缺陷的工具和方法感兴趣.什么工具有用?我目前的理解是'printf'调试(例如添加日志记录和重新部署)是通常使用的.
如果您已经完成了对功能系统的调试,那么它的调试是使用OO或过程语言构建的系统吗?
遗憾的是,printf
调试似乎是Standard ML,Objective Caml和Haskell的实践状态.在交互式读取 - 评估 - 打印循环中进行了一些调试,但是一旦你的应用程序达到25,000或50,000行就不那么有用了.
如果你足够幸运地被使用Haskell中,有一个例外:快速检查是不可缺少的测试和deubgging.QuickCheck甚至可以用于Haskell和C代码的组合,正如Xmonad窗口管理器的经验所证明的那样.
值得注意的是,1990年左右,Andrew Tolmach为新泽西州的Standard ML建立了一个非常好的时间旅行调试器,但它不值得维护.值得注意的是,OCaml调试器(也是一个时间旅行调试器)在某一点上只对字节码起作用,这是不方便的,并且拒绝违反抽象障碍,这使得它无用.这是3.07左右的发布; 也许情况有所改善.
同样在20世纪90年代早期,Henrik Nilsson为Haskell构建了一个有趣的调试器,但其主要功能是阻止调试器意外地改变程序的评估行为.这很有趣,但仅限于lavzy-evaluation weenies.
作为使用这三种语言构建或使用大型应用程序的人,我发现游戏状态令人沮丧.
我们在工作中使用的主要工具(Haskell商店)是:
快速检查
HPC:可视化Haskell程序覆盖工具(我们在内部开发)
记录/ printf的/跟踪
有时,GHCi调试器