在Goland中对goroutine协程断点调试 环境: Goland 参考了 chatgpt 的回复 进行断点调试的代码 package main import ( "fmt" "sync" "time" ) // worker 模拟处理任务 func worker(id int, wg *sync.WaitGroup) { defer wg.Done() // 确保任务完成后通知 WaitGroup 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.WaitGroup // 启动 3 个 goroutine for 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 的值)