首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

利用堆栈回顾、addr2line和Graphviz生成运行时函数调用图

2012-08-21 
利用堆栈回溯、addr2line和Graphviz生成运行时函数调用图现在的软件源代码动则千万行,初学者常常感到迷惘,

利用堆栈回溯、addr2line和Graphviz生成运行时函数调用图

现在的软件源代码动则千万行,初学者常常感到迷惘,如果能自动生成关键函数的调用关系图,则思路可以清晰许多。如下面这幅图展示了WebKit网页渲染的部分函数执行过程,比单纯地看代码直观多了。

利用堆栈回顾、addr2line和Graphviz生成运行时函数调用图

代码下载点这里,包括三个文件backtrace.h、backtrace.c和callgraph.py。

1. 堆栈回溯

比如要分析libwebcore.so里面的函数调用,首先要知道这个库文件在内存中的映射位置。程序启动时调用backtrace_init('libwebcore.so', 10, 65535)(第二个参数表示最大回溯层数,第三个参数表示最大栈帧大小)。函数读取“/proc/self/maps”得到:

dot -Tpng -Nshape=box -Nfontsize=10 callgraph.dot -o callgraph.png



热点排行