GoLand无法直接生成火焰图,需手动用go tool pprof导出folded stack文本并用flamegraph.pl渲染;关键前提是编译不加-ldflags="-s"、采样时长适配服务特性、使用原版flamegraph.pl。

GoLand 里直接点运行按钮出不了火焰图
GoLand 本身不集成火焰图渲染能力,它只是调用 go tool pprof,而这个命令默认不生成 SVG。你点「Run with pprof」或在 Run Configuration 里勾选「Enable CPU profiling」,最终拿到的仍是 cpu.pprof 二进制文件——不是火焰图,也不能直接打开成可视化视图。
必须手动导出 folded stack 再喂给 flamegraph.pl
GoLand 生成的 cpu.pprof 文件,得配合带符号的二进制才能解析函数名;否则全是 [unknown] 或地址。关键操作链是:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 确保 GoLand 构建时没加
-ldflags="-s -w"(检查 Build Settings → Go Build Tags and Args) - 用 GoLand 启动服务后,手动 curl 抓 profile:
curl -s "http://localhost:8080/debug/pprof/profile?seconds=10" -o cpu.pprof - 终端执行:
go tool pprof -raw -lines ./your-binary cpu.pprof > stacks.txt - 再用原版
flamegraph.pl渲染:./flamegraph.pl stacks.txt > flame.svg
Web UI 的 /ui/flamegraph 在 GoLand 环境下大概率白屏
GoLand 自带的 Terminal 或 Services 工具窗口里执行 go tool pprof -http=:8080 cpu.pprof,然后访问 http://localhost:8080/ui/flamegraph,页面常为空白。这不是 GoLand 的锅,而是因为:
- 该页面前端尝试调用本地
dot命令,但 GoLand 默认不继承系统 PATH 中的 Graphviz 路径 - macOS 上即使 brew 安装了 graphviz,
dot -V在 GoLand Terminal 里也可能报 command not found - Windows 用户若安装 Graphviz 时没勾选「Add to PATH」,同样失败,且无任何错误提示
最稳的路:别依赖 GoLand 的图形化入口
GoLand 的「Profile」按钮只负责采集和存文件,后续分析必须脱离 IDE 手动完成。容易被忽略的三个硬性前提:
-
go build必须不带-s或-w,否则nm -C your-binary看不到函数名 - 采样时长不能靠默认 30 秒——高并发服务里,
?seconds=5更易捕获真实热点 -
flamegraph.pl必须是 Brendan Gregg 原版,GitHub 上brendan-gregg/FlameGraph主分支,npm 包装的版本对 Go 符号解析支持极差

















