debugging - 有调试生产功能程序的实际经验吗?

标签 debugging haskell f# functional-programming scheme

我对用于诊断大型功能程序中的缺陷的工具和方法感兴趣。什么工具有用?我目前的理解是“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/

相关文章:

jquery - 如何查看使用模板生成的 jquerymobile 源代码?

haskell - Haskell 中 Nothing 的类型是什么?

haskell - 在 newtype 中实现 >>=

f# - 需要帮助将带有泛型的接口(interface)从 C# 转换为 F#

math - 单位安全的平方根

perl - 如何在调试时恢复全局变量 $1、$2、$3?

python - 为什么我的 python 代码在调试器中按预期运行而不是其他方式?

haskell - 在 Haskell 中导入模块(初学者)

.net - 在泛型函数上使用约束时 F# 类型约束不匹配

java - 如何在 Eclipse IDE 中调试 drools (.drl) 文件