如何让Go"阻止"分析器工作?

时间:2018-01-24 17:55:51

标签: go profiling

我正在尝试启用Go"阻止"通过将以下代码添加到我的主函数中来进行分析:

f, err := os.Create(profFile)
if err != nil {
    // Error handling
}

runtime.SetBlockProfileRate(1)
p := pprof.Lookup("block")
defer func() {
    err := p.WriteTo(f, 0)
    if err != nil {
        Logger.Error("Error writing block profile: %v", err)
    }
}()

我确实看到在运行应用程序后创建的配置文件,我试图通过运行命令来解释结果:

$ go tool pprof --text <PROFILE_FILE> 
29.95mins of 29.95mins total (  100%)
      flat  flat%   sum%        cum   cum%
 29.95mins   100%   100%  29.95mins   100%  

我没有看到关于阻止时间的任何数据。生成块配置文件数据的代码是否正确?或者我可能需要使用不同的选项去&#34;去工具&#34;?任何帮助表示赞赏。

谢谢, Raghu

1 个答案:

答案 0 :(得分:1)

正如@JimB在评论中提到的,运行“pprof”的正确方法如下:

$ go tool pprof  --text <PATH_TO_BINARY> <PROFILE_FILE>