可以方便打印某个函数下的函数调用链路的工具?

2022-12-06 18:40:58 +08:00
 xing393939

就像这篇文章介绍的,打印 main 函数的调用链路,最终结果如下:

g[01]:  ->main.A1
g[01]:      ->main.B1
g[01]:          ->main.C1
g[01]:              ->main.D

目前知道有go-callvis,但是它是基于静态代码分析的,所以得到的结果会很杂乱。而上面说的那种方法,需要用代码生成工具给每个函数插入一行 defer 代码。有没有非侵入式的办法?个人感觉用 ebpf 是可以实现的。

1054 次点击
所在节点    Go 编程语言
3 条回复
lysS
2022-12-07 12:28:59 +08:00
runtime.Stack 啊,Frame 可以有更多选项
xing393939
2022-12-07 16:33:39 +08:00
@lysS runtime.Stack 打印的是上游调用,我想看它的下游调用
lysS
2022-12-08 16:32:59 +08:00
这个不能静态实现吧? pprof 那个看起来比较靠谱,callvis 就算了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/900577

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX