我正在寻找为golang项目生成调用图的可能性。类似于C++类的Doxygen's diagram functionality(选项CALL_GRAPH = YES)。在golang中创建调用图
到目前为止,我发现
http://saml.rilspace.org/profiling-and-creating-call-graphs-for-go-programs-with-go-tool-pprof
或
http://blog.golang.org/profiling-go-programs
此样本程序的调用堆栈每秒,而在程序运行,并为分析有用的图表100倍。如果你的程序大部分时间花在与你无关的功能上,我发现这个解决方案不是非常有用。
再有是这样的:
https://godoc.org/golang.org/x/tools/go/callgraph/static
从它的描述听起来像什么,我需要,但似乎没有文档,我不知道如何使用它。
我还发现
https://github.com/davecheney/graphpkg/blob/master/README.md
和
https://github.com/paetzke/go-dep-graph/blob/master/README.org
,但他们只创建的依赖关系图。
这是所描述的方法我提到的第一个链接;我忘了链接到原始网站。对我来说这并没有给出令人满意的结果;我看到很多我不感兴趣的函数调用,但是我没有看到我感兴趣的函数调用。在一些分析运行后,我看到一些有趣的功能,但从来没有。没有一个静态工具,它只是通过代码并创建图形? – alex
我的问题之一是我也对仅执行一次的函数感兴趣(在安装过程中)。有没有办法提高工具的采样率,s.t.短跑功能也被抽样的概率增加了? – alex
采样率在运行时硬编码/ pprof.go:587通过runtime.SetCPUProfileRate(hz)hz = 100,即每秒100个采样。如果在调用profile.Start()之前调用runtime.SetCPUProfileRate(desiredSamplingRate)*,则可以覆盖它。尝试在调用profile.Start()后设置采样率不起作用(“运行时:无法设置cpu配置文件速率,直到先前的配置文件已完成。”)。 – alex