本文主要是介绍go-runtime/trace,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
执行追踪器,跟踪器捕获各种各样的时间,如go协程的创建、阻塞、解锁,syscall 进入、退出、阻塞、GC相关时间,堆大小变化,处理器启动、停止等,将这些事件写入到io.writor中,大多数时间都会捕获到精确的纳秒精度时间戳
- 如何创建go执行追踪器
- 如何停止追踪器
- 如何查看追踪器记录的数据
如何创建go执行追踪器
func Start(w io.Writer) error
未当前的程序启用追踪器,追踪的数据将会写入w 中,不能重复创建
如何停止追踪器
func Stop()
停止当前的追踪器,当所有追踪完全写入w后,才返回
如何查看追踪器记录的数据
go tool trace xxxx
下面我们看一个例子
package mainimport ("os""runtime/trace""time"
)func main() {file,_ := os.Create("/Users/xujie/go/src/awesomeProject/main/trace")trace.Start(file)defer trace.Stop()data := make(chan int)go test(data)<- data
}
func test(s chan int){time.Sleep(time.Second)go test2(s)
}
func test2(s chan int){time.Sleep(time.Second)s <- 3
}
运行代码后,就在main包中生成了一个文件,我们使用下面的命令查看这个文件的内容
go tool trace /Users/xujie/go/src/awesomeProject/main/trace
系统会自动启动浏览器
然后我们可以对一项内容进行查看
这篇关于go-runtime/trace的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!