【发布时间】:2013-09-01 12:03:31
【问题描述】:
我在 Haskell 中有一个非终止表达式。我想调试并检查它没有终止的原因。我学到的一项技术是在 GHCi 中使用以下内容:
:set -fbreak-on-exception
:trace nonterminating_expression
^C
:hist 50
所以我可以看到在无限计算中运行的指令。问题是我想用:step 继续计算,忽略中断。我可以这样做吗?
还有其他用于调试非终止计算的解决方案吗? (超过 50 条历史记录或其他有助于完成任务的实践。)
【问题讨论】:
-
你熟悉如何在任意代码中设置断点吗?我会在无限循环中的某个地方放一个中断,然后用它来逐步完成迭代。
-
是的,但问题是我会接到很多假电话。例如,我想我已经知道了无限循环的位置,但是每个函数调用只有 1% 的时间会导致无限循环。
标签: debugging haskell infinite-loop ghc