使用堆栈进行分析
Profiling with 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 test
或 stack exec
使用上面的标志(这似乎比安装可执行文件更合乎逻辑剖析它)。
它适用于我 lts-6.4
。对我来说,这表明您没有安装 base 的分析版本。这需要在安装 GHC 时安装。 stack exec -- which ghc
说什么?如果 ghc 不在您的堆栈根目录 ~/.stack/programs
中,那么这意味着您使用的是自定义 GHC 安装,它可能缺少 base 的分析版本。要解决,可以:
1) 删除自定义安装和 运行 "stack setup"
2) 或者,设置 system-ghc: false
和 运行 "stack setup"
stack install
等同于stack build --copy-bins
,所以你应该可以运行
stack build --executable-profiling --library-profiling --ghc-options="-rtsopts"
这将在您的 .stack-work/
目录下的某处生成一个已编译的可执行文件(stack
会告诉您位置)。然后您应该能够 运行 它并获得您期望的 .prof
文件。
似乎对我有用的唯一选择是:
stack exec --profile NameOfYourAppGoesHere -- +RTS -p
我正在尝试在 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
使用上面的标志(这似乎比安装可执行文件更合乎逻辑剖析它)。
它适用于我 lts-6.4
。对我来说,这表明您没有安装 base 的分析版本。这需要在安装 GHC 时安装。 stack exec -- which ghc
说什么?如果 ghc 不在您的堆栈根目录 ~/.stack/programs
中,那么这意味着您使用的是自定义 GHC 安装,它可能缺少 base 的分析版本。要解决,可以:
1) 删除自定义安装和 运行 "stack setup"
2) 或者,设置 system-ghc: false
和 运行 "stack setup"
stack install
等同于stack build --copy-bins
,所以你应该可以运行
stack build --executable-profiling --library-profiling --ghc-options="-rtsopts"
这将在您的 .stack-work/
目录下的某处生成一个已编译的可执行文件(stack
会告诉您位置)。然后您应该能够 运行 它并获得您期望的 .prof
文件。
似乎对我有用的唯一选择是:
stack exec --profile NameOfYourAppGoesHere -- +RTS -p