首页 > 编程笔记 > Go语言笔记 阅读:17

go tool trace工具的用法(附带实例)

在演示 go tool trace 工具的使用方法之前,首先在代码中加入三行与创建追踪文件有关的代码,然后生成追踪文件。示例代码如下:
f, _ := os.Create("trace_value.out")
trace.Start(f)
defer trace.Stop()
...//以前的业务代码

运行后会发现生成了追踪文件 trace_value.out:
$ go run main.go
$ ll
total 24
-rw-r--r--  1 makesure10  staff   404B  8 25 15:46 main.go
-rw-r--r--  1 makesure10  staff   5.5K  8 25 23:53 trace_value.out

接下来,使用 go tool trace 工具查看追踪文件:
$ go tool trace trace_value.out
2022/08/25 23:54:37 Parsing trace...
2022/08/25 23:54:37 Splitting trace...
2022/08/25 23:54:37 Opening browser. Trace viewer is listening on http://127.0.0.1:51650

执行该命令会自动打开一个 Web 页面,显示程序运行时的跟踪数据,并提供一系列工具和视图来帮助我们分析和优化程序的性能,如下图所示:


图 1 打开的Web页面

单击图 1 中的 View trace,可以看到协程、堆栈、线程等的信息,如下图所示。


图 2 单击View trace后看到的内容

在图 2 所示的追踪文件中,我们可以看到堆栈上内存分配和释放的频率,以及协程数。在这个追踪文件所生成的 Web 视图中,我们总是看到同一时刻只有一个协程在工作,即使切换的时候也是如此,这是只有一个 CPU 核造成的。

在下图所示的追踪文件中,同一时刻却有多个协程都在工作:


图 3 多个协程都在工作

比较这两份不同的追踪文件,我们可以看到其在使用多核上的差异,可见我们能利用追踪文件来判断程序是否利用了多核。

相关文章