2012-07-24 69 views
1

我试图剖析使用此处描述的过程Go程序:谱研究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工具的提及here用于替代上述过程。有谁知道它是否仍然保持以及在哪里可以找到它?

我在Win7 64上使用go1.0.2。

谢谢!

回答

0

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

C:>去工具纳米 用法:纳米[-aghnsTu]文件... 转到工具处:退出状态1

C:>

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

请随时举报bug http://code.google.com/p/go/issues。我认为它曾经工作过,因为6nm列在nm_commands中,但Go nm已经重新命名为nm,并且移出用户PATH。

亚历

+0

这个问题是不是与纳米所提供的版本,而是用perl脚本和Windows终端之间的不兼容性。它可能与cygwin或类似的工作,但我没有尝试过。 我在这里找出了自己的修复方法:http://exneehilo.blogspot.com.au/2012/07/profiling-go-with-pprof-under-windows.html – Mau 2012-07-28 15:50:43

0

我有类似的问题。

解决方案在实际建筑应用中。所以当我用“去构建test_app.go”而不是运行“./test_app”之后,我得到了正确的文件分析函数名称。