我对用于诊断大型功能程序中的缺陷的工具和方法感兴趣。什么工具有用?我目前的理解是“printf”调试(例如添加日志记录和重新部署)是通常使用的。
如果你已经调试了一个功能系统,那么调试一个用 OO 或过程语言构建的系统有什么不同呢?
最佳答案
可悲的是,printf
调试似乎是标准 ML、Objective Caml 和 Haskell 的实践状态。在交互式读取-评估-打印循环中进行了一些调试,但是一旦您的应用程序达到 25,000 或 50,000 行,就不太有用了。
如果你有幸使用 Haskell,有一个异常(exception) : QuickCheck是测试和调试必不可少的。 QuickCheck 甚至可以用于 Haskell 和 C 代码的组合,正如 Xmonad window manager 的经验所证明的那样。 .
值得注意的是,大约在 1990 年,Andrew Tolmach 为新泽西的标准 ML 构建了一个非常好的时间旅行调试器,但它被认为不值得维护。还值得注意的是,OCaml 调试器(也是一种时间旅行调试器)曾经只在字节码上工作,这很不方便,并且拒绝违反抽象障碍,这使得它毫无用处。这大约是 3.07 版左右;也许情况有所改善。
同样在 1990 年代初期,Henrik Nilsson 为 Haskell 构建了一个有趣的调试器,但它所做的主要是防止调试器意外改变程序的评估行为。这很有趣,但仅适用于 lavzy-evaluation 小妞。
作为使用所有这三种语言构建或处理过大型应用程序的人,我发现游戏状态令人沮丧 .
关于debugging - 有调试生产功能程序的实际经验吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/393492/