Golang traces: ссылка на событие канала для совпадения с EvGoBlockSelect - PullRequest
0 голосов
/ 02 апреля 2020

Я работаю с пакетом 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)
...