go tool trace工具的用法(附带实例)
在演示 go tool trace 工具的使用方法之前,首先在代码中加入三行与创建追踪文件有关的代码,然后生成追踪文件。示例代码如下:
运行后会发现生成了追踪文件 trace_value.out:
接下来,使用 go tool trace 工具查看追踪文件:
执行该命令会自动打开一个 Web 页面,显示程序运行时的跟踪数据,并提供一系列工具和视图来帮助我们分析和优化程序的性能,如下图所示:

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

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

图 3 多个协程都在工作
比较这两份不同的追踪文件,我们可以看到其在使用多核上的差异,可见我们能利用追踪文件来判断程序是否利用了多核。
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 多个协程都在工作
比较这两份不同的追踪文件,我们可以看到其在使用多核上的差异,可见我们能利用追踪文件来判断程序是否利用了多核。