我试图了解 Go 程序的行为,所以我在调试器(delve)中运行它。我可以轻松地跟踪执行流程,直到它遇到将数据发送到通道的循环。
我试图弄清楚从通道读取什么代码,即一旦发生写入将执行什么。有可能弄清楚吗?是否可以在从该通道读取时设置断点?
hchan
我尝试在调试器中检查通道的内部 ( )。我可以看到它有一个recvq
和sendq
字段,它指向一个runtime.sudog
和runtime.g
结构,其中包含一些运行时内部结构,包括一个pc
或程序计数器。但是,从中我无法弄清楚代码在哪里。