panic: send on closed channel 的情况使用 dlv 一直 s 只会进入fatalpanic()

来源:1-6 Go 语法背后的秘密

EwdAger

2021-05-21 19:46:34

package main

func main() {
    ch := make(chan int)
    close(ch)
    ch <- 1
}

上面的代码用 dlv 工具进行 debug, 在 ch <- 1打断点,一直 s 下去只会进入 fatalpanic()函数然后直接 exit 出去了。

systemstack(func() {
                 exit(2)
         })

但是后面换 goland 直接全局搜索到 chan.go中的send on closed channel,在此处打断点,然后进行 debug 却可以走到这一步
图片描述

请问老师这是为啥?

写回答

1回答

Xargin

2021-05-21

我试了一下

这里要用 si 才能进去~

s 不行,


si 要多按几次


之后看到函数调用就可以直接断点进去了

0
hargin
回复
hwdAger
hp>这个应该只是 dlv 自己不认识这种语法糖翻译的问题,不用想太多。。晚上讲作业的时候会说说这个

h021-05-22
共2条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程