是否有针对Haskell / GHCi /其他的调试器“声明”?

时间:2014-05-10 08:30:33

标签: debugging haskell

背景

我正在学习GHCi:break功能。 JS有一个名为debugger;的内置语句,如果正在进行调试,它将充当断点,否则不会执行任何操作。

问题

Haskell / GHCi是否有类似的声明/函数?

进一步说明

我在想Debug.Trace.trace :: String -> a -> a

如果它在内部使用unsafePerformIO,或者依赖GHCi特有的东西,这是可以的,因为它仅用于调试。

或者如果还没有任何内容,那么:set -fbreak-on-exception无法实现这样的事情,并且有一个抛出异常的函数并立即捕获它? (这里也可能需要unsafePerformIO,因此可以将函数放在纯代码中。)

2 个答案:

答案 0 :(得分:5)

你不需要它。

让代码干净比完成调试插入要好得多。

使用 ghci ,您可以根据需要在功能名称或行号中设置断点。来自ghci:help

   :break [<mod>] <l> [<col>]  set a breakpoint at the specified location
   :break <name>               set a breakpoint on the specified function

替代

更重要的是,您可以在基于项目的./.ghci命令批处理文件中保留断点列表,并在ghci start处自动加载。

答案 1 :(得分:3)

如果你真的想要,你可以定义自己的身份功能

debugger :: a -> a
debugger x = x
GHCi中的

:break debugger