【发布时间】:2022-11-28 12:49:48
【问题描述】:
我正在尝试使用 go tool trace 获取调用树,但它仅显示前 80 个函数并且似乎不支持 pprof 的标志,如 --nodecount 等。如何让跟踪显示所有节点?如果 trace 不是为此设计的,那么无论函数的执行时间如何,我如何才能获得完整的调用树,因为如果运行时间不够长 pprof 可能会错过它?
【问题讨论】:
-
trace的主要目标不是做一个调用图,它的主要目标是性能提升相关。您可能会发现 github.com/ofabry/go-callvis 很有用,它使用静态代码分析来制作调用图 -
谢谢,这似乎是一个合理的解决方案,但它会构建一个包含所有可能选项的树,这对我来说太过分了。我需要一棵完整的树,但对于特定场景,是否有可能或不需要工具?
-
你可以要求 go-callvis 限制它用参数绘制的内容。没有适合这项工作的标准 go 工具。 pprof 和 trace 最终用于性能优化和运行时分析。恐怕你必须研究第三方项目才能得到你想要的东西。我想更多的程序员对性能比文档更感兴趣 :)