使用 bazel 构建的二进制文件查看 pprof 中的源代码

Viewing source code in pprof with bazel built binary

我正在尝试分析我使用 pprof 在 bazel 下构建的二进制文件。我能够生成一个配置文件,但是当我在 Web UI 中查看它时,我无法在源代码视图中看到我的代码。我看到的是 ??s。

这是我正在使用的命令:

CPUPROFILE=/tmp/cpu_profile bazel run --linkopt='-lprofiler' //my:binary

pprof -http=localhost:8000 -lines bazel-bin/my/binary /tmp/cpu_profile

如何访问源代码信息?

默认情况下,bazel 使用 fastbuild compilation_mode 构建二进制文件,它没有 link 源所需的所有必要调试信息。

要解决此问题,请使用 dbg 模式进行配置:

CPUPROFILE=/tmp/cpu_profile bazel run -c dbg \
  --linkopt='-lprofiler' \
  //my:binary

或者在优化构建中包含调试信息:

CPUPROFILE=/tmp/cpu_profile bazel run -c opt \
  --copt=-g \
  --linkopt='-lprofiler' \
  //my:binary