golang 可视化调试
package main

import (
	"fmt"
	"os"
	"runtime/trace"
)

func main()  {
	// 创建trace
	f,err := os.Create("trace.out")
	if err != nil{
		panic(err)
	}

	defer f.Close()

	// 启动trace
	err = trace.Start(f)
	if err != nil {
		panic(err)
	}
	fmt.Println("hello GMP")
	// 停止trace
	trace.Stop()
}

执行命令

 go tool trace trace.out  

点击 view trace

debug查看

GODEBUG-schedtrace=1000 ./main 
package main

import (
	"fmt"
	"time"
)

func main() {
	for i:=0;i<5;i++{
		fmt.Println(i)
		time.Sleep(time.Second)
	}
}

╭─deepin@deepin-PC ~/go/test1 
╰─$ GODEBUG=schedtrace=1000 ./main
SCHED 0ms: gomaxprocs=6 idleprocs=3 threads=5 spinningthreads=1 idlethreads=0 runqueue=0 [0 0 0 0 0 0]
0
1
SCHED 1002ms: gomaxprocs=6 idleprocs=6 threads=5 spinningthreads=0 idlethreads=3 runqueue=0 [0 0 0 0 0 0]
2
SCHED 2009ms: gomaxprocs=6 idleprocs=6 threads=5 spinningthreads=0 idlethreads=3 runqueue=0 [0 0 0 0 0 0]
3
SCHED 3016ms: gomaxprocs=6 idleprocs=6 threads=5 spinningthreads=0 idlethreads=3 runqueue=0 [0 0 0 0 0 0]
4
SCHED 4022ms: gomaxprocs=6 idleprocs=6 threads=5 spinningthreads=0 idlethreads=3 runqueue=0 [0 0 0 0 0 0]