gpt4 book ai didi

haskell - 如何显示 Haskell 中抛出的错误的回溯

转载 作者:行者123 更新时间:2023-12-03 15:28:26 24 4
gpt4 key购买 nike

我目前正在调试我在 Haskell 中为我的文凭论文实现的算法。大多数输入似乎都可以正常工作,但我发现一个输入使 GHC 抛出错误

*** Exception: Map.find: element not in the map



由于我的代码中有许多 Map 查找,因此我需要找到引发此错误的行以了解它。我通读了 this guide , 但是虽然我设置了标志 fbreak-on-exception (和 -error ),所有 GHCi 在跟踪我正在测试的功能后给我的是:
[...]> :trace test
[...]
Stopped at <exception thrown>
_exception ::
e = GHC.Exception.SomeException (GHC.Exception.D:Exception _
(GHC.Show.D:Show ...) ....)
(GHC.Exception.ErrorCall ['M',....])
Unable to list source for <exception thrown>
Try rerunning with :trace, :back then :list
[<exception thrown>] [...]> :history
Empty history. Perhaps you forgot to use :trace?

尝试 :trace再次似乎也没有帮助。

那么,有人可以告诉我出了什么问题或提供另一种查找违规线路的方法吗?提前致谢!

PS:我使用的是 GHC 版本 7.0.3,所以链接指南应该适用。

最佳答案

也许这会帮助你

http://www.haskell.org/haskellwiki/Debugging

LocH provides wrappers over assert for generating source-located exceptions and errors.
...
adding: import Debug.Trace.Location and then recompiling with the preprocessor on:

  $ ghc A.hs --make -pgmF loch -F -no-recomp  [1 of 1] Compiling Main             ( A.hs, A.o )  Linking A ...  $ ./A  A: A.hs:14:14-19: Maybe.fromJust: Nothing



wiki 上还有其他提示,例如使用 Safe-Library .

关于haskell - 如何显示 Haskell 中抛出的错误的回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6584409/

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