我在代码中的不同点运行了一堆Getmonad 。runGetState他们运行在一个懒惰的ByteString返回readFile。有一个main函数调用了一堆非常短的函数,每个函数都做了一点阅读。
当我main在 GHCI 中运行时,我得到以下信息:
<interactive>: too few bytes. Failed reading at byte position 1
这就是它提供的所有信息。我有两个问题:
有没有办法从这个错误中获取更多的调试信息?我可以确定哪个特定的调用
runGetState失败了吗?行号会很有帮助。我能得到任何其他调试信息吗?关于为什么它可能在字节位置 1 失败的任何想法?那是从零开始的吗?即它是否成功读取字节 0 但在 1 上失败,或者它是否在第一个字节上失败?对于它的价值,我可以做
print theLazyByteString,它确实打印33026,这是我所期望的。所以文件不是空的,似乎已经成功打开读取。我的假设是“字节位置 1”实际上并不是指文件本身的早期点,而是runGetState稍后调用的开始。