Я работаю с пакетом golang traces . В файле трассировки, полученном в результате выполнения, я просматриваю экземпляр события EvGoBlockSelect
и пытаюсь найти пары отправки-получения канала (их стеки вызовов), которые в конечном итоге разблокируют это заблокированное событие.
В трассирует, после разбора, поле Link
для EvGoBlockSelect
указывает на событие EvGoUnblock
. Это соединение не помогает в получении действий канала, которые привели к разблокировке программы, заблокированной на EvGoBlockSelect
. Возможно, погоня за еще несколькими Link
приведет к четкому установлению пар отправки-получения, но я не знаю, как это можно сделать.
Ниже приведен фрагмент трассировки:
<*trace.Event>(0xc000ed4bd0)
T=24=EvGoBlockSelect
G=26992255
T=3812773
Link = <*trace.Event>(0xc000ed4cf0)
T=21=EvGoUnblock
G=475
T=3832979
Link = <*trace.Event>(0xc000ed4e10)
T=14=EvGoStart
G=26992255
T=3841969
Link = <*trace.Event>(0xc000ed5050)
T=23=EvGoBlockRecv
G=26992255
T=4022571
Link = <*trace.Event>(0xc000edb3b0)
T=21=EvGoUnblock
G=26992257
T=7956792
Link =<*trace.Event>(0xc000edb4d0)
T=14=EvGoStart
G=26992255
T=7967489
Link =<*trace.Event>(0xc000edb4d0)