0
有沒有辦法進入,可能打開了一些調試標誌,以獲得堆棧跟蹤的所有goroutines 「父母」公寓的痕跡(在此使用「父母」來表示執行呼叫go foo()
的goroutine,它啓動了該goroutine)。這個問題的上下文是我有一個連接泄漏,並注意到在awaitDone
(在sql包中)阻塞了很多goroutines,並且這些goroutine在創建連接時產生。獲取「父」子例程以及「孩子」的堆棧
有沒有辦法進入,可能打開了一些調試標誌,以獲得堆棧跟蹤的所有goroutines 「父母」公寓的痕跡(在此使用「父母」來表示執行呼叫go foo()
的goroutine,它啓動了該goroutine)。這個問題的上下文是我有一個連接泄漏,並注意到在awaitDone
(在sql包中)阻塞了很多goroutines,並且這些goroutine在創建連接時產生。獲取「父」子例程以及「孩子」的堆棧
如果我明白你在問什麼,你可以使用運行時包打印/輸出你想要的信息。
看看 https://golang.org/pkg/runtime/#Caller和跳過參數。加上框架文檔:https://golang.org/pkg/runtime/#Frames
這就是你所追求的?
正常的輸出(例如在恐慌中)已經這麼做了,儘管它在邏輯上是可能的*:注意並不是每個正在運行的goroutine都有一個活的父節點。母公司可能早就終止了。那麼問題是什麼? – Volker
我的意思是在創建goroutine時的堆棧。它可能需要一個調試標誌,以便goroutine在創建時可以將這些信息與它們一起存儲,以便在請求堆棧跟蹤時可以使用此調試上下文。 – jonderry
那段時間已過,信息不再存在。 – Volker