Please enable Javascript to view the contents

Go 分析工具 Trace

· ☕ 1 分钟 · 🐔 Redd Tsai
🏷️
  • #Go
  • 程式開發的過程中,你可能需要解決效能瓶頸的問題(Bottleneck)或分析程式內部調用的狀況,Golang 也提供了這方面的工具來幫助你分析,這裡記錄一下如何使用。

    Trace

    首先,將 runtime/trace 這個套件加入你想分析的程式中,透過它來收集程式執行期間所有的活動(such as goroutine creation/blocking/unblocking, syscall enter/exit/block, GC-related events)。

    1. 範例程式
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      13
      14
      15
      16
      
      package main
      
      import (
          "os"
          "runtime/trace"
      )
      
      func main() {
          trace.Start(os.Stderr)
          defer trace.Stop()
          ch := make(chan int)
          go func() {
              ch <- 42
          }()
          <-ch
      }
      
    2. 產生 trace file
      1
      
      go run main.go 2> trace.out
      
    3. 開啟診斷工具
      1
      
      go tool trace trace.out
      

    Reference

    Go Trace
    Go Diagnostics
    Example

    分享

    蔡文杰
    作者
    Redd Tsai
    Backend Developer