我正在学习GHCi:break功能。 JS有一个名为debugger;
的内置语句,如果正在进行调试,它将充当断点,否则不会执行任何操作。
Haskell / GHCi是否有类似的声明/函数?
我在想Debug.Trace.trace :: String -> a -> a
。
如果它在内部使用unsafePerformIO
,或者依赖GHCi特有的东西,这是可以的,因为它仅用于调试。
或者如果还没有任何内容,那么:set -fbreak-on-exception
无法实现这样的事情,并且有一个抛出异常的函数并立即捕获它? (这里也可能需要unsafePerformIO
,因此可以将函数放在纯代码中。)
答案 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
。