我正在尝试使用此处描述的过程来分析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
有没有人经历过这个并找到了解决办法?
提及here 6prof
工具可用于替代上述程序。有谁知道它是否仍然存在以及在哪里找到它?
我在Win7 64上使用go1.0.2。
谢谢!
答案 0 :(得分:2)
我修复了perl脚本以在Windows下工作。
详细信息:http://exneehilo.blogspot.com.au/2012/07/profiling-go-with-pprof-under-windows.html
答案 1 :(得分:0)
我自己没有检查过,但据我记忆,pprof脚本的问题在于它使用的是标准(mingw)版本的nm,而不是Go特定的nm。 Go发行版有自己的nm程序:
C:>去工具nm 用法:nm [-aghnsTu]文件... 去工具nm:退出状态1
C:>
理解所有Go二进制格式,而mingw附带的nm程序则不然。查看nm_commands变量的pprof perl脚本。它列出了几个可能的候选人,但没有一个是你想要的。如果你改为指向Go nm,它应该可以工作。
欢迎在此处报告错误http://code.google.com/p/go/issues。我认为它曾经起作用,因为6nm在nm_commands中列出,但是Go nm已经被重命名为nm并且已经移出用户PATH。
亚历
答案 2 :(得分:0)
我有类似的问题。
解决方案是在实际的建筑应用中。因此,当我使用“ go build test_app.go ”构建并运行“ ./ test_app ”之后,我得到了正确的分析文件,其中包含函数名称。