我试图在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 test
或stack exec
(这似乎比安装可执行文件更合理,以便对其进行分析)。
答案 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