执行官。命令不会从 Go 自己的 pprof 工具注册错误



这是我的代码:

cmd := exec.Command("go", "tool", "pprof", "-dot", "-lines", "http://google.com")
out, err := cmd.Output()
if err != nil {
    panic(err)
}
println(string(out))

当我在控制台中运行完全相同的命令时,我看到:

$ go tool pprof -dot -lines http://google.com 
Fetching profile from http://google.com/profilez
Please wait... (30s)
server response: 404 Not Found 

但是,我的 go 程序没有注册这是一个错误。奇怪的是,变量输出打印为空字符串,错误为零。这是怎么回事?

澄清一下,我正在分析 http://google.com 故意创建错误。我通常会分析一个真正的 Go 应用程序。

文本

Fetching profile from http://google.com/profilez
Please wait... (30s)
server response: 404 Not Found 

被写到斯特德。 您的程序捕获标准输出,它是空的。考虑致电:

out, err := cmd.CombinedOutput()

抓住标准输出和标准。

cmd.Output()cmd.CombinedOutput()返回err == nil,因为命令以状态零退出。也许应该提交一个问题,请求命令以非零状态退出。

最新更新