我感兴趣的是使用哪些工具和方法来诊断大型功能程序中的缺陷。有哪些工具有用?我目前的理解是“printf”调试(例如添加日志记录和重新部署)是通常使用的。
如果您已经调试过一个功能系统,那么它与调试使用 OO 或过程语言构建的系统有何不同?
Sadly, printf
调试似乎是标准 ML、Objective Caml 和 Haskell 的实践状态。在交互式读取-评估-打印循环中需要进行一些调试,但是一旦您的应用程序达到 25,000 或 50,000 行,那么它的用处就不那么大了。
如果你足够幸运能够使用 Haskell,有一个例外: 快速检查 http://www.cs.chalmers.se/~rjmh/QuickCheck/ is 不可或缺的用于测试和调试。 QuickCheck 甚至可以用于 Haskell 和 C 代码的组合,正如使用Xmonad 窗口管理器 http://xmonad.org/.
值得注意的是,1990 年左右,Andrew Tolmach 为新泽西州的 Standard ML 构建了一个非常好的时间旅行调试器,但人们认为它不值得维护。还值得注意的是,OCaml 调试器(也是一个时间旅行调试器)一度仅适用于字节码,这很不方便,并且拒绝违反抽象障碍,这使得它毫无用处。这是大约 3.07 版本左右;也许情况有所改善。
同样是在 20 世纪 90 年代初,Henrik Nilsson 为 Haskell 构建了一个有趣的调试器,但它的主要作用是防止调试器意外更改程序的评估行为。这很有趣,但仅限于懒惰评估的小孩子。
作为使用这三种语言构建或开发过大型应用程序的人,我发现比赛状态令人沮丧.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)