Haskell Object Observation Debugger(HOOD)是一个小型事后分析程序惰性函数语言调试器哈斯克尔。它基于观察中间数据结构,而不是更多使用的传统步进和可变测试范式命令式语言调试器。

特征

  • 观察基本类型(Int、Bool、Float等)
  • 观察有限和无限结构(列表、树、,数组等)。
  • 观察函数的使用模式。
  • 观察一元动作,包括IO动作。
  • 挂钩用于为新的基础类型和使用的定义的类型。
  • 可编程浏览功能-可对结构浏览器进行编码并接通电源。
  • 包含使用Haskell-like语法。
  • 支持线程安全观察。
  • 支持对异常的观察(在某些编译器上)。

示例

Hood可以观察数据结构:

main=运行O ex2ex2=打印.反向(注意“中间”).反向$ [0..9]

运行此程序可获得以下输出:

[0,1,2,3,4,5,6,7,8,9]--中间物9 : 8 : 7 : 6 : 5 : 4 : 3 : 2 : 1 : 0 : []

Hood还可以观察函数,显示参数和结果每次通话:

main=运行O ex9ex9=打印$observe“foldl(+)0[1..4]”foldl(+)0[1..4]

运行此程序可获得以下输出:

10--文件夹(+)0[1..4]{ \ { \ 0 1  -> 1, \ 1 2  -> 3, \ 3 3  -> 6, \ 6 4  -> 10} 0 (1 : 2 : 3 : 4 : []) ->10个}

请注意,Hood保留了观察中的功能。如果参数未在功能,它仍然未被评估。例如:

ghci>runO$print$observe“sum xs”(\xs->sum xs)[0..2][0..]

请注意,ys未赋值(由下划线表示):

--总和xs{ \ (0 : 1 : 2 : []) _  -> 3}

历史

Hood于1999年在OGI为GHC 4.X开发。我们正在研究Haskell和Lava的调试工具包,所以我们将Hood移植到GHC6.X,并在黑客攻击时重新发布。我们希望您觉得它有用。

HOOD文件