This question already has an answer here:
golang tool pprof not working properly - same broken output regardless of profiling target

(1个答案)


3年前关闭。




编辑:当我将可执行文件添加到pprof调用时工作

我正在尝试使用https://github.com/pkg/profile的探查器对一个简单程序进行探查:并使用pprof工具。
package main

import "github.com/pkg/profile"

func main() {
    defer profile.Start().Stop()
    t1()
    t2()
}

func t1() {
    for i := 0; i < 9000000000; i++ {
        x := i * 2
        x += x
    }
}

func t2() {
    for i := 0; i < 1000000000; i++ {
        x := i * 2
        x += x
    }
}

这些示例显示了一张漂亮的表,其中包含所有已调用的函数以及每个函数花费了多长时间,但是我只看到100%的使用几秒钟,没有更多信息。

我该怎么做才能使其输出功能?它与完成代码后输出的“cpu性能分析已禁用”行有关系吗?

这就是我用来生成输出的内容:
./test
2016/12/16 11:04:39 profile: cpu profiling enabled, /tmp/profile176930291/cpu.pprof
2016/12/16 11:04:44 profile: cpu profiling disabled, /tmp/profile176930291/cpu.pprof
martin@martin-laptop:~/work/bin$ go tool pprof -text /tmp/profile176930291/cpu.pprof
4.90s of 4.90s total (  100%)
      flat  flat%   sum%        cum   cum%
     4.90s   100%   100%      4.90s   100%

最佳答案

您是否遇到类似以下错误:

tmp的本地符号失败:打开/ tmp / go-build594370835 / command-line-arguments / _obj / exe / tmp:没有这样的文件或目录

如果是这样的话;在源目录中,尝试:

go build tmp.go

重新运行go tool pprof -text ...会导致:
go tool pprof -text /tmp/profile668503934/cpu.pprof
5040ms of 5040ms total (  100%)
      flat  flat%   sum%        cum   cum%
    4560ms 90.48% 90.48%     4560ms 90.48%  main.t1
     480ms  9.52%   100%      480ms  9.52%  main.t2
         0     0%   100%     5040ms   100%  main.main
         0     0%   100%     5040ms   100%  runtime.goexit
         0     0%   100%     5040ms   100%  runtime.main

现在,它使用了./tmp二进制文件中包含的符号。

我正在使用go version go1.7.3 linux/amd64

10-07 21:08