You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stack构建支持性能分析(Profiling)的程序?解决执行+RTS -p时的报错问题

解决Stack构建Profiling应用时的-p requires -prof报错问题

你遇到的核心问题主要是参数传递方式错误,再加上可能存在旧构建缓存的干扰。我来一步步帮你排查解决:

1. 修复stack exec的参数分隔逻辑

你执行的stack exec prof-exe +RTS -p里,Stack会把+RTS -p误认为是自己的命令参数,而不是传递给prof-exe的运行时参数。这就导致Stack错误判断你在给它传-p flag,从而抛出报错。

正确的命令需要用--分隔Stack自身参数和目标程序的参数:

stack exec -- prof-exe +RTS -p

2. 清理旧构建缓存(推荐操作)

如果之前有过非Profiling模式的构建记录,Stack可能会复用旧的编译产物,导致Profiling支持没有正确生效。先清理缓存再重新构建:

stack clean
stack build --profile --executable-profiling --library-profiling

其实--profile参数已经默认包含了库和可执行文件的Profiling启用,所以也可以简化成:

stack build --profile

3. 验证Profiling构建结果

构建完成后,你可以检查生成的可执行文件是否带有Profiling信息。在项目目录下执行:

find .stack-work -name "prof-exe" -type f | xargs file

如果输出里包含with debug_info或明确提到profiling,说明构建是符合要求的。

按照上面的步骤操作后,就能正常生成性能分析报告(当前目录会生成prof-exe.prof文件)。

内容的提问来源于stack exchange,提问作者Daniil Iaitskov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 19:02:46