这篇文章:
用 Graphviz 可视化函数调用介绍了如何分析C程序的运行时函数调用我,包括程序执行过程的函数调用顺序及调用次数,并以图形的形式直观输出结果。
需要用到的工具:GCC, Graphviz DOT, Addr2line
但我发现其提供的源码有一些问题:
1. 在trace.txt文件中输出的地址没有0x前缀,而在pvtrace工具中却读取了此前缀,导致程序无法正常运行,需要修正此bug。
2. 如果分析的目标文件名中有句点(.),那么输出的.dot文件将无法正确处理,因此需要把目标文件名中的句点替换为其它字符,比如下划线。
3. 程序中一些预定义数组或许需要调大一些。
对于上面提到的问题,我进行了修正,并提供了修改后的源程序下载:
|
文件: | pvtrace.zip |
大小: | 3KB |
下载: | 下载 |
|
此外,还存在一些可进一步研究的问题:
1. 它只能处理C程序,不能处理C++程序(例如,C++中的函数重载它就没法解决)。可以进一步研究addr2line,看是否有合适的方法对C++程序进行处理。
2. 虽然可以使用MinGW中的GCC来分析Windows下的程序,但仍不方便。可以进一步研究VC是否提供了对应的工具可用,或者是否存在其它类似方法。
阅读(1688) | 评论(0) | 转发(0) |