拉不拉稀肚拉稀 发表于 2024-12-10 10:50:44

在Goland中对goroutine协程断点调试

在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 配置调试
https://i-blog.csdnimg.cn/direct/c2ce42ec277b49dcb64653d2206ed304.png
https://i-blog.csdnimg.cn/direct/e990d0b53a7a4bb08230da19e9b8c53b.png
[*]当程序在断点暂停时,打开 Goroutines 面板,检察当前所有运行的 goroutine
https://i-blog.csdnimg.cn/direct/7605dd5bb9eb4a38946317c4c9fe694e.png
[*]利用调试工具中的 Step Over (F8) 或 Step Into (F7),逐步分析协程的行为
[*]在 Variables 面板中检察每个协程的局部变量(如 id 和 i的值)
https://i-blog.csdnimg.cn/direct/f3ced4976280421b973fef6d754bb9a9.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 在Goland中对goroutine协程断点调试