首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取“父”goroutine和“子”goroutine的堆栈。

获取“父”goroutine和“子”goroutine的堆栈。
EN

Stack Overflow用户
提问于 2017-08-18 03:10:59
回答 2查看 510关注 0票数 1

在go中,有没有一种方法可以获得所有goroutine的堆栈跟踪以及“父”goroutine的堆栈跟踪(这里使用"parent“是指执行对go foo()的调用的goroutine,该goroutine启动了所讨论的goroutine)。这个问题的上下文是,我有一个连接泄漏,并注意到在awaitDone (在sql包中)上有许多goroutine被阻塞,这些goroutines是在创建连接的地方产生的。

EN

回答 2

Stack Overflow用户

发布于 2021-06-22 12:57:55

runtime.Stack()将为您提供运行时所知道的所有堆栈信息。

阅读您可以看到的输出,对于Goroutines,它们被设计为不包含其祖先的信息。

但是,在堆栈输出中,您确实可以访问创建goroutine的位置。从技术上讲,您可以将其与其他Goroutine的堆栈输出自动交叉匹配,以推导出部分和不准确的拓扑。

AFAIK,这是多少Golang IDE解决调试问题。除非Golang核心团队改变对Goroutine元数据的看法,否则我认为这是最好的选择。

票数 0
EN

Stack Overflow用户

发布于 2017-08-18 03:26:18

如果我理解您的要求,您可以使用运行时包打印/输出您想要的信息。

看看https://golang.org/pkg/runtime/#Caller和跳过参数。加上框架文档:https://golang.org/pkg/runtime/#Frames

这就是你要找的吗?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45743227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档