首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >中断后在GHC中继续调试

中断后在GHC中继续调试
EN

Stack Overflow用户
提问于 2013-08-29 15:11:08
回答 1查看 426关注 0票数 18

我在Haskell中有一个不终止的表达式。我想调试并检查它没有终止的原因。我学到的一种技术是在GHCi中使用以下内容:

代码语言:javascript
复制
:set -fbreak-on-exception
:trace nonterminating_expression
^C
:hist 50

所以我可以看到在无限计算中运行的指令。问题是,我想继续使用:step进行计算,忽略中断。我可以这样做吗?

有没有其他的解决方案来调试非终止计算?(历史记录超过50条记录或其他有助于完成任务的实践。)

EN

回答 1

Stack Overflow用户

发布于 2013-09-19 13:51:18

我以前做过的一件事是,每当我按下一个键时,都会使用unsafePerformIO中断:

假设t是您的原始表达式,在表达式中插入x:

代码语言:javascript
复制
import System.IO
import System.IO.Unsafe

t  i = do print i;    t  (i+1)
t2 i = do print i; x; t2 (i+1)

x = do r <- hReady stdin
       if r then do a<-hGetChar stdin
                    print a -- break on this line
            else print "" 

然后在ghci提示符下:

代码语言:javascript
复制
*Main> :break 9
*Main> t2 0

按键盘键

代码语言:javascript
复制
*Main> :cont

从您停止的位置继续。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18504432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档