1

我正在尝试使用此处描述的过程来分析 GO 程序:

http://blog.golang.org/2011/06/profiling-go-programs.html

但是pprof在输出中显示地址而不是函数名称:

(pprof) top10
Total: 2113 samples
     298  14.1%  14.1%      298  14.1% 0000000000464d34
     179   8.5%  22.6%      179   8.5% 0000000000418e83
     157   7.4%  30.0%      157   7.4% 0000000000418e60
     112   5.3%  35.3%      112   5.3% 0000000000403293
     101   4.8%  40.1%      101   4.8% 0000000000464d4f
      83   3.9%  44.0%       83   3.9% 000000000040329c
      77   3.6%  47.7%       77   3.6% 0000000000418e7a
      62   2.9%  50.6%       62   2.9% 0000000000456a38
      37   1.8%  52.3%       37   1.8% 0000000000418e41
      37   1.8%  54.1%       37   1.8% 0000000000435f57

有没有人经历过并找到解决方法?

这里提到了6prof用于替代上述过程的工具。有谁知道它是否仍在维护以及在哪里可以找到它?

我在 Win7 64 上使用 go1.0.2。

谢谢!

4

3 回答 3

2

我修复了 perl 脚本以在 Windows 下工作。

详情在这里:http ://exneehilo.blogspot.com.au/2012/07/profiling-go-with-pprof-under-windows.html

于 2012-07-28T15:48:43.723 回答
0

我有类似的问题。

解决方案是在实际的建筑应用中。因此,当我使用“ go build test_app.go ”构建并运行“ ./test_app ”之后,我得到了正确的分析文件,其中包含函数名称。

于 2012-07-27T15:03:08.543 回答
0

我自己没有检查过,但据我记得,pprof 脚本的问题在于它使用标准(mingw)版本的 nm,而不是 Go 特定的 nm。Go 发行版有自己的 nm 程序:

C:>go tool nm usage: nm [-aghnsTu] file ... go tool nm: exit status 1

C:>

它可以理解所有 Go 二进制格式,而 mingw 附带的 nm 程序则不能。查看 pprof perl 脚本中的 nm_commands 变量。它列出了几个可能的候选人,但没有一个是你想要的。如果您将其更改为指向 Go nm,它应该可以工作。

随时在http://code.google.com/p/go/issues报告错误。我认为它曾经可以工作,因为 nm_commands 中列出了 6nm,但 Go nm 已重命名为 nm 并移出用户 PATH。

亚历克斯

于 2012-07-24T23:30:31.160 回答