用栈进行分析

时间:2016-06-20 15:05:00

标签: debugging haskell profiling haskell-stack

我试图在Stack中进行分析,这样我就可以得到与RWH Chapter 25上指示的指标相同的指标。我开始了一个新的Stack项目,如下所示:

stack new test

然后,如所示here我跑了:

stack install --executable-profiling --library-profiling --ghc-options="-rtsopts"

但是此命令失败并出现以下错误:

    While constructing the BuildPlan the following exceptions were encountered:

--  While attempting to add dependency,
    Could not find package base in known packages

--  Failure when adding dependencies:    
      base: needed (>=4.7 && <5), stack configuration has no specified version (latest applicable is 4.9.0.0)
    needed for package test-0.1.0.0

Recommended action: try adding the following to your extra-deps in /home/damian/test/stack.yaml
- base-4.9.0.0

You may also want to try the 'stack solver' command

我已尝试过上述建议,但没有成功。

如果我运行stack build,那么程序的构建没有错误。

作为一个额外的问题,我想知道是否无法使用上面的标志运行stack teststack exec(这似乎比安装可执行文件更合理,以便对其进行分析)。

3 个答案:

答案 0 :(得分:3)

它适用于我lts-6.4。对我而言,这表明您没有安装基本配置文件版本。安装GHC时需要安装。 stack exec -- which ghc说什么?如果ghc不在您的堆栈根目录~/.stack/programs中,那么这意味着您正在使用自定义GHC安装,这可能缺少基本的分析版本。要解决,请:

1)删除自定义安装并运行“堆栈设置” 2)或者,设置system-ghc: false并运行“堆栈设置”

答案 1 :(得分:1)

stack install相当于stack build --copy-bins,因此您应该可以运行

stack build --executable-profiling --library-profiling --ghc-options="-rtsopts"

这将导致在.stack-work/目录下的某个位置编译可执行文件(stack将告诉您在哪里)。然后,您应该能够运行它并获得您期望的.prof文件。

答案 2 :(得分:0)

对我来说唯一可行的选择是:

stack exec --profile NameOfYourAppGoesHere -- +RTS -p