【问题标题】:Why does `go tool pprof` show addresses instead of function names?为什么`go tool pprof` 显示地址而不是函数名?
【发布时间】:2014-04-07 04:38:00
【问题描述】:
$ go tool pprof pgears.go profilefile.prof
addr2line: crackhdr: unknown header type
Welcome to pprof!  For help, type 'help'.
(pprof) top
Total: 8 samples
       5  62.5%  62.5%        5  62.5% 0000000000028a8b
       1  12.5%  75.0%        1  12.5% 000000000002295c
       1  12.5%  87.5%        1  12.5% 000000000009375a
       1  12.5% 100.0%        1  12.5% 00000000000d278a
       0   0.0% 100.0%        1  12.5% 000000000000252a
       0   0.0% 100.0%        1  12.5% 000000000000259d
       0   0.0% 100.0%        2  25.0% 0000000000017d9e
       0   0.0% 100.0%        2  25.0% 000000000001a2bf
       0   0.0% 100.0%        6  75.0% 000000000001b630
       0   0.0% 100.0%        1  12.5% 0000000000045401
(pprof)

为什么go tool pprof 显示地址而不是函数名? 来自http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.htmlhttp://blog.golang.org/profiling-go-programs 我们知道它一定是函数名。

或者如何将字节信息更改为函数名?

操作系统:Mac OS 10.9.2
Go 版本:go1.2 darwin/amd64

【问题讨论】:

  • 我之前没有遇到过这样的问题,但我认为addr2line: crackhdr: unknown header type线是问题的根源。
  • 参见:discussion on go-nuts

标签: go pprof


【解决方案1】:

pprof 的第一个参数必须是二进制文件,而不是源文件。

所以你必须编译二进制文件:

$ go build -o ppears

并将其用作pprof的输入:

$ go tool pprof pgears

【讨论】:

  • 如何获取二进制文件?
  • @lincoln 你编译源文件:$ go build -o pgears.go :)
【解决方案2】:
go build -o bin // build the binary file

go tool pprof bin profilefile.prof

【讨论】:

    猜你喜欢
    • 2019-05-30
    • 2015-09-25
    • 1970-01-01
    • 2017-01-03
    • 2022-01-15
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多