为什么`go pprof`工具显示地址而不是函数名称?
问题描述:
$ 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)
Why go tool pprof
shows addresses instead of function names?
from http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html
or http://blog.golang.org/profiling-go-programs
We know it must be function name.
Or how can I change the byte information to function name?
Operation System: Mac OS 10.9.2
Go Version: go1.2 darwin/amd64
$ go工具pprof pgears.go profilefile.prof
addr2line:crackhdr:未知的标头类型
欢迎使用 pprof! 要获得帮助,请键入“帮助”。
(pprof)top
总计:8个样本
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)
code> pre>
为什么 go工具pprof code>显示地址而不是函数名称?
来自 http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html
or http://blog.golang.org/pr 结束程序
我们知道它必须是函数名。 p>
或者如何将字节信息更改为函数名? p>
操作系统:Mac OS 10.9.2
Go版本:go1.2 darwin / amd64 p>
div>
答
The first argument to pprof
must be a binary, not a source file.
So you must compile the binary:
$ go build -o ppears
and use it as the input to pprof
:
$ go tool pprof pgears
答
go build -o bin // build the binary file
go tool pprof bin profilefile.prof