调试生产功能程序的任何实际经验?

Ste*_*ner 16 debugging scheme f# haskell functional-programming

我对用于诊断大规模功能程序中的缺陷的工具和方法感兴趣.什么工具有用?我目前的理解是'printf'调试(例如添加日志记录和重新部署)是通常使用的.

如果您已经完成了对功能系统的调试,那么它的调试是使用OO或过程语言构建的系统吗?

Nor*_*sey 12

遗憾的是,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.

作为使用这三种语言构建或使用大型应用程序的人,我发现游戏状态令人沮丧.


Don*_*art 6

我们在工作中使用的主要工具(Haskell商店)是:

  1. 快速检查
  2. HPC:可视化Haskell程序覆盖工具(我们在内部开发)
  3. 记录/ printf的/跟踪
  4. 有时,GHCi调试器