gpt4 book ai didi

haskell - 在 GHCI 中调试 "too few bytes"错误

转载 作者:行者123 更新时间:2023-12-04 02:53:55 25 4
gpt4 key购买 nike

我在我的代码中的不同位置运行了一堆带有 runGetStateGet monad。它们在 readFile 返回的惰性 ByteString 上运行。有一个 main 函数调用了一堆非常短的函数,每个函数都进行了一点读取。

当我在 GHCI 中运行 main 时,我得到以下信息:

<interactive>: too few bytes. Failed reading at byte position 1

这就是它提供的所有信息。我有两个问题:

  1. 有没有办法从这个错误中获取更多的调试信息?我可以确定 runGetState 的哪个特定调用失败了吗?行号会很有帮助。我可以获得任何其他调试信息吗?

  2. 有没有想过为什么它可能在字节位置 1 处失败?那是零基础吗? IE。它是成功读取字节 0 但读取 1 失败,还是读取第一个字节失败?对于它的值(value),我可以执行 print theLazyByteString,它会打印 33026,这正是我所期望的。所以文件不是空的,似乎已成功打开以供阅读。我的假设是“字节​​位置 1”实际上并不是指文件本身早期的某个点,而是指稍后 runGetState 调用的开始。

最佳答案

too few bytes. Failed reading at byte position

binary < 0.6 时,您得到的错误是(在 getBytes 中)吗?使用大于剩余输入的参数调用,或 getLazyByteStringNul当剩余输入不包含 0 字节时调用。或者当某些客户端代码调用 fail "too few bytes" 时.

Is there any way to obtain more debugging information from this error?

不,这就是你从那个错误中得到的全部信息,它知道的不止这些。

Can I determine which particular invocation of runGetState failed? A line number would be very helpful. Any other debugging info I could get?

这是可能的。您可以使用 ghci 调试器(在候选项上设置断点并逐步执行它们),或者您可以插入一些 trace在源中的战略点调用 ( import Debug.Trace ) 以查看您的位置。

Any thoughts on why it might have failed at byte position 1? Is that zero-based? I.e. did it successfully read byte 0 but fail on 1, or did it fail on the first byte?

它是从零开始的(数字是之前读取的字节数)。至于为什么会失败,不看源码和输入就不知道了。

My assumption is that "byte position 1" doesn't actually refer to a point early in the file itself, but the beginning of a runGetState invocation later on.

并非不可能。这取决于您传递给 runGetState 的偏移量参数。电话。

关于haskell - 在 GHCI 中调试 "too few bytes"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17051790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com