Debugging 有调试器吗;声明;为了Haskell/GHCi/其他什么? 背景

Debugging 有调试器吗;声明;为了Haskell/GHCi/其他什么? 背景,debugging,haskell,Debugging,Haskell,我正在学习GHCi的:中断功能。JS有一个名为debugger的内置语句在调试过程中充当断点,否则不会执行任何操作 问题: Haskell/GHCi是否有类似的语句/函数 进一步说明 我在想一些类似于Debug.Trace.Trace::String->a->a的事情 如果它在内部使用unsafePerformIO,或者依赖于特定于GHCi的东西,这是可以的,因为它只用于调试 或者,如果还没有任何异常,那么使用:set-fbreak on exception并具有一个抛出异常并立即捕获它的函数,

我正在学习GHCi的:中断功能。JS有一个名为
debugger的内置语句在调试过程中充当断点,否则不会执行任何操作

问题: Haskell/GHCi是否有类似的语句/函数

进一步说明 我在想一些类似于
Debug.Trace.Trace::String->a->a
的事情

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

或者,如果还没有任何异常,那么使用
:set-fbreak on exception
并具有一个抛出异常并立即捕获它的函数,难道不能实现类似的功能吗?(
unsafePerformIO
在这里也可能需要,这样函数就可以放在纯代码中。)

您不需要它

干净的代码比充满调试插入要好得多

使用ghci,您可以根据函数名或行号在任何需要的地方设置断点。来自ghci:帮助

   :break [<mod>] <l> [<col>]  set a breakpoint at the specified location
   :break <name>               set a breakpoint on the specified function
:break[]在指定位置设置断点
:break在指定函数上设置断点
备选方案


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

如果确实需要,您可以定义自己的标识函数

debugger :: a -> a
debugger x = x

:在GHCi中断开调试器

这既不允许您访问调用函数的变量绑定,也不允许您返回调用函数,除非您以前在那里创建了另一个断点@Gabrieliba
:trace
:hist
:back
似乎起作用了