在Goland中对goroutine协程断点调试

打印 上一主题 下一主题

主题 1656|帖子 1656|积分 4970

在Goland中对goroutine协程断点调试



  • 环境: Goland

    • 参考了 chatgpt 的回复

  • 进行断点调试的代码
  1. package main
  2. import (
  3.         "fmt"
  4.         "sync"
  5.         "time"
  6. )
  7. // worker 模拟处理任务
  8. func worker(id int, wg *sync.WaitGroup) {
  9.         defer wg.Done() // 确保任务完成后通知 WaitGroup
  10.         for i := 0; i < 5; i++ {
  11.                 fmt.Printf("Worker %d: Processing step %d\n", id, i)
  12.                 time.Sleep(500 * time.Millisecond) // 模拟耗时任务
  13.         }
  14.         fmt.Printf("Worker %d: Task completed\n", id)
  15. }
  16. func main() {
  17.         var wg sync.WaitGroup
  18.         // 启动 3 个 goroutine
  19.         for i := 1; i <= 3; i++ {
  20.                 wg.Add(1)
  21.                 go worker(i, &wg)
  22.         }
  23.         fmt.Println("All workers started. Waiting for completion...")
  24.         wg.Wait() // 等待所有任务完成
  25.         fmt.Println("All workers completed.")
  26. }
复制代码


  • 在 worker 函数内 fmt.Printf("Worker %d: Processing step %d\n", id, i) 这一行设置断点
  • 在 Goland 配置调试


  • 当程序在断点暂停时,打开 Goroutines 面板,检察当前所有运行的 goroutine

  • 利用调试工具中的 Step Over (F8) 或 Step Into (F7),逐步分析协程的行为
  • 在 Variables 面板中检察每个协程的局部变量(如 id 和 i  的值)


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表