chan引发panic输出位置
write close panic:
准备代码:
package main
func main() {
ch := make(chan int,10)
close(ch)
ch <- 1
}
编译并执行:
go build main.go
./main
引发报错结果:
通过go tool compile编译找到调用方:
go tool compile -S main.go | grep “main.go:6”
dlv断点调试:
$ dlv exec ./main
$ b chansend1
$ si
close nil panic:
准备代码:
package main
func main() {
var ch chan int
close(ch)
}
重复以上顺序
跳到断点处
close closed panic
准备代码:
package main
func main() {
var ch = make(chan int, 5)
close(ch)
close(ch)
}
重复以上逻辑
跳到断点处: