【发布时间】:2014-12-08 07:10:33
【问题描述】:
假设我有一堆 goroutines 的堆栈跟踪,例如。 g.:
goroutine 5633 [select]:
net/http.(*persistConn).writeLoop(0xc21303ac00)
/usr/lib/go/src/pkg/net/http/transport.go:791 +0x271
created by net/http.(*Transport).dialConn
/usr/lib/go/src/pkg/net/http/transport.go:529 +0x61e
在我的例子中,一个独特的特定于应用程序的对象由一组 goroutines 提供服务,我想查看与特定对象相关的 goroutines 的堆栈跟踪。我有数百个特定于应用程序的对象,所以我得到了数百个相同的 goroutine。
如何将我的日志与堆栈跟踪中的 goroutine 关联起来?似乎没有办法在堆栈跟踪中识别当前的 goroutine,也没有办法命名 goroutine,所以我可以在堆栈跟踪中看到特定的值。
PS
我已经阅读了 Go 邮件列表上的相关Why-would-you-want-to-it 帖子,因此我正在寻找替代方案/黑客/解决方法(希望不涉及洒代码每隔一行进行一次日志调用)。
【问题讨论】: