在Goland中对goroutine协程断点调试
package mainimport ( "fmt" "sync" "time"
)
func worker ( id int , wg * sync. WaitGroup) { defer wg. Done ( ) for i := 0 ; i < 5 ; i++ { fmt. Printf ( "Worker %d: Processing step %d\n" , id, i) time. Sleep ( 500 * time. Millisecond) } fmt. Printf ( "Worker %d: Task completed\n" , id)
} func main ( ) { var wg sync. WaitGroupfor i := 1 ; i <= 3 ; i++ { wg. Add ( 1 ) go worker ( i, & wg) } fmt. Println ( "All workers started. Waiting for completion..." ) wg. Wait ( ) fmt. Println ( "All workers completed." )
}
在 worker
函数内 fmt.Printf("Worker %d: Processing step %d\n", id, i)
这一行设置断点 在 Goland
配置调试 当程序在断点暂停时,打开 Goroutines 面板,查看当前所有运行的 goroutine
使用调试工具中的 Step Over (F8)
或 Step Into (F7)
,逐步分析协程的行为 在 Variables 面板中查看每个协程的局部变量(如 id
和 i
的值)