如何获得调用错误的位置?

Has*_*ant 11 haskell

我正在寻找替换loch(及其预处理器)的东西,因为它不能用ghc 7编译.

具体来说,如果error被调用,那么我想尽可能方便地找出调用它的位置(行号和堆栈跟踪会很好).

ehi*_*ird 12

您可以使用-xcRTS选项,如本页所述 ; 你需要编译你的程序与分析支持,输出是非常难看的,但它的工作原理.

这应该这样做:

$ ghc --make -prof -auto-all myprog.hs
$ ./myprog +RTS -xc
Run Code Online (Sandbox Code Playgroud)

从技术上讲,这仅提供成本中心堆栈,而不是真正的堆栈跟踪.改进的堆栈跟踪支持将在GHC 7.4中出现.


C. *_*ann 5

如果这是在你正在使用的代码中使用,并且你可以容忍使用Template Haskell,那么这个placeholders是一个可爱而简单的方法来做这样的事情.但是,它不会帮助您找到实际error表达式的位置,只能使用它自己error的函数.


Dan*_*her 5

使用GHC-7进行构建非常简单.这只是Control.Exception与6.12来的变化,简单的解决方法是改变Exception以类型SomeExceptionDebug.Trace.Location,70线和144线添加表达式类型签名限制base依赖于>= 4.2 && < 4.6在.cabal文件(撞击版)和你很高兴.