xing393939
V2EX  ›  Go 编程语言

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

By xing393939 at 2022 年 12 月 6 日 · 1743 次点击

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

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

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

3 条回复
lysS
   1
lysS  
   2022 年 12 月 7 日
runtime.Stack 啊,Frame 可以有更多选项
xing393939
   2
xing393939  
OP
   2022 年 12 月 7 日
@lysS runtime.Stack 打印的是上游调用,我想看它的下游调用
lysS
   3
lysS  
   2022 年 12 月 8 日
这个不能静态实现吧? pprof 那个看起来比较靠谱,callvis 就算了吧
The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
© 2026 V2EX · 26ms · 3.9.8.5