我曾尝试分析一些 golang 应用程序,但无法正常工作,我遵循了以下两个教程:
- http://blog.golang.org/profiling-go-programs
- http://saml.rilspace.org/profiling-and-creating-call-graphs-for-go-programs-with-go-tool-pprof
两者都说在向应用程序添加一些代码行后,您必须执行您的应用程序,我这样做了,我在屏幕上收到以下消息:
2015/06/16 12:04:00 配置文件:启用 cpu 分析,/var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
所以,我知道正在执行分析,将信息发送到文件。
但是,当我看到文件大小时,在我测试的任何程序中,它总是 64 字节。
当我尝试使用 pprof 打开 cpu.pprof 文件并执行“top10”命令时,我看到文件中没有任何内容:
(“./fact”是我的应用程序)
去工具 pprof ./fact /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
前十名 -->
(pprof) top10 0 of 0 total (0%) flat flat% sum% cum cum%
所以,当我进行分析时,就像什么都没有发生。
我已经在 mac(本例)和 ubuntu 中使用三个不同的程序对其进行了测试。
你知道我做错了吗?
然后示例程序非常简单,这是代码(是我从互联网上获取的一个非常简单的阶乘程序):
import "fmt"
import "github.com/davecheney/profile"
func fact(n int) int {
if n == 0 {
return 1
}
return n * fact(n-1)
}
func main() {
defer profile.Start(profile.CPUProfile).Stop()
fmt.Println(fact(30))
}
谢谢,费尔