第十三章修改 (#837)

Co-authored-by: Joe Chen <jc@unknwon.io>
This commit is contained in:
Haigang Zhou
2022-05-13 19:20:09 +08:00
committed by GitHub
parent d29644465a
commit 92d91dfa1c
11 changed files with 70 additions and 70 deletions

View File

@@ -13,7 +13,7 @@
## 13.10.2 用 go test 调试
如果代码使用了 Go 中 testing 包的基准测试功能,我们可以用 gotest 标准的 `-cpuprofile` 和 `-memprofile` 标志向指定文件写入 CPU 或 内存使用情况报告。
如果代码使用了 Go 中 `testing` 包的基准测试功能,我们可以用 gotest 标准的 `-cpuprofile` 和 `-memprofile` 标志向指定文件写入 CPU 或 内存使用情况报告。
使用方式:```go test -x -v -cpuprofile=prof.out -file x_test.go```
@@ -21,7 +21,7 @@
## 13.10.3 用 pprof 调试
你可以在单机程序 progexec 中引入 runtime/pprof 包;这个包以 pprof 可视化工具需要的格式写入运行时报告数据。对于 CPU 性能分析来说你需要添加一些代码:
你可以在单机程序 progexec 中引入 `runtime/pprof` 包;这个包以 pprof 可视化工具需要的格式写入运行时报告数据。对于 CPU 性能分析来说你需要添加一些代码:
```go
var cpuprofile = flag.String("cpuprofile", "", "write cpu profile to file")
@@ -39,7 +39,7 @@ func main() {
...
```
代码定义了一个名为 cpuprofile 的 flag调用 Go flag 库来解析命令行 flag如果命令行设置了 cpuprofile flag则开始 CPU 性能分析并把结果重定向到那个文件os.Create 用拿到的名字创建了用来写入分析数据的文件)。这个分析程序最后需要在程序退出之前调用 StopCPUProfile 来刷新挂起的写操作到文件中;我们用 defer 来保证这一切会在 main 返回时触发。
代码定义了一个名为 cpuprofile 的 flag调用 Go flag 库来解析命令行 flag如果命令行设置了 cpuprofile flag则开始 CPU 性能分析并把结果重定向到那个文件(`os.Create` 用拿到的名字创建了用来写入分析数据的文件)。这个分析程序最后需要在程序退出之前调用 `StopCPUProfile()` 来刷新挂起的写操作到文件中;我们用 `defer` 来保证这一切会在 `main()` 返回时触发。
现在用这个 flag 运行程序:```progexec -cpuprofile=progexec.prof```
@@ -93,7 +93,7 @@ if *memprofile != "" {
}
```
用 -memprofile flag 运行这个程序:```progexec -memprofile=progexec.mprof```
`-memprofile flag` 运行这个程序:```progexec -memprofile=progexec.mprof```
然后你可以像这样再次使用 gopprof 工具:```gopprof progexec progexec.mprof```