Просмотр исходного кода в pprof с помощью встроенного bazel двоичного кода

Я пытаюсь профилировать двоичный файл, который я создал под bazel, используя pprof. Я могу создать профиль, однако, когда я просматриваю его в веб-интерфейсе, я не вижу свой код в представлении исходного кода. Вместо этого я вижу ??s.

Вот команды, которые я использую:

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

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

Как я могу получить доступ к информации об исходном коде?


person Dig-Doug    schedule 29.09.2019    source источник


Ответы (1)


По умолчанию bazel создает двоичные файлы, используя режим компиляции fastbuild в котором нет всей необходимой отладочной информации, необходимой для связи с источником.

Чтобы исправить это, профилируйте в режиме 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
person Dig-Doug    schedule 29.09.2019