就像这篇文章介绍的,打印 main 函数的调用链路,最终结果如下:
g[01]: ->main.A1
g[01]: ->main.B1
g[01]: ->main.C1
g[01]: ->main.D
目前知道有go-callvis,但是它是基于静态代码分析的,所以得到的结果会很杂乱。而上面说的那种方法,需要用代码生成工具给每个函数插入一行 defer 代码。有没有非侵入式的办法?个人感觉用 ebpf 是可以实现的。
1
lysS 2022-12-07 12:28:59 +08:00
runtime.Stack 啊,Frame 可以有更多选项
|
2
xing393939 OP @lysS runtime.Stack 打印的是上游调用,我想看它的下游调用
|
3
lysS 2022-12-08 16:32:59 +08:00
这个不能静态实现吧? pprof 那个看起来比较靠谱,callvis 就算了吧
|