我在代码中的不同点运行了一堆Get
monad 。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
稍后调用的开始。