前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go-runtime/trace

go-runtime/trace

作者头像
酷走天涯
发布2019-06-11 16:30:10
4330
发布2019-06-11 16:30:10
举报

执行追踪器,跟踪器捕获各种各样的时间,如go协程的创建、阻塞、解锁,syscall 进入、退出、阻塞、GC相关时间,堆大小变化,处理器启动、停止等,将这些事件写入到io.writor中,大多数时间都会捕获到精确的纳秒精度时间戳

  • 如何创建go执行追踪器
  • 如何停止追踪器
  • 如何查看追踪器记录的数据
如何创建go执行追踪器

func Start(w io.Writer) error

未当前的程序启用追踪器,追踪的数据将会写入w 中,不能重复创建

如何停止追踪器

func Stop()

停止当前的追踪器,当所有追踪完全写入w后,才返回

如何查看追踪器记录的数据

go tool trace xxxx

下面我们看一个例子

package main

import (
    "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
}

image.png

运行代码后,就在main包中生成了一个文件,我们使用下面的命令查看这个文件的内容

go tool trace /Users/xujie/go/src/awesomeProject/main/trace

系统会自动启动浏览器

image.png

然后我们可以对一项内容进行查看

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.12.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何创建go执行追踪器
  • 如何停止追踪器
  • 如何查看追踪器记录的数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档