2012-07-24 67 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」之後,我得到了正確的文件分析函數名稱。