Debugging 逐行逐行遍历函数
本用户指南: 广告: 执行可以是单步执行:计算器将暂停执行 大约在每次缩减之后,允许使用局部变量 检查。这相当于在每个点上设置断点 在节目中 然而,我在文件中找不到任何东西告诉我如何做到这一点。在标题下: 2.5.2。单步 它描述了如何从一个断点跳到另一个断点。但我不想在每一行上都设置断点。广告是虚假的还是有办法逐行浏览节目Debugging 逐行逐行遍历函数,debugging,haskell,ghci,Debugging,Haskell,Ghci,本用户指南: 广告: 执行可以是单步执行:计算器将暂停执行 大约在每次缩减之后,允许使用局部变量 检查。这相当于在每个点上设置断点 在节目中 然而,我在文件中找不到任何东西告诉我如何做到这一点。在标题下: 2.5.2。单步 它描述了如何从一个断点跳到另一个断点。但我不想在每一行上都设置断点。广告是虚假的还是有办法逐行浏览节目 谢谢。设置并到达断点后,您可以从调试器调用:步骤 还有其他单一步骤的可能性。在断点处键入:help一次将告诉您更多有关您可以执行的操作的信息。好的,我知道了: ghci&
谢谢。设置并到达断点后,您可以从调试器调用
:步骤
还有其他单一步骤的可能性。在断点处键入:help
一次将告诉您更多有关您可以执行的操作的信息。好的,我知道了:
ghci> :step function_name arg1 arg2
...
...
ghci> :step
...
...
ghci> :step
如果忘记了函数参数,则会得到一条神秘的错误消息:
<interactive>:138:1:
No instance for (Show (String -> Double))
arising from a use of `print'
Possible fix:
add an instance declaration for (Show (String -> Double))
In a stmt of an interactive GHCi command: print it
好吧,这是一个变通办法,但这不是广告上宣传的。感谢您的关注。不过,该错误消息实际上与单步执行无关。如果在主提示符上向函数传递的参数太少,则会出现相同的错误。它告诉您它无法打印结果部分应用的函数。(添加实例的建议是假的)。“它告诉你它无法打印结果中部分应用的函数。”是的,我知道了——但这花了我一段时间。出于某种原因,我总是想键入:step my_func并省略args。我在我的帖子中添加了这个错误信息,以防其他人这样做。这是一个术语问题。使用:步骤时,调试器会“大约在每次缩减之后”创建一个断点。您不必在每一行上都设置断点。
ghci> :continue