Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1064064
  • 博文数量: 77
  • 博客积分: 11498
  • 博客等级: 上将
  • 技术积分: 1840
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-04 11:10
文章分类

全部博文(77)

文章存档

2011年(1)

2010年(16)

2009年(5)

2008年(55)

分类: C/C++

2009-04-20 00:02:56

这篇文章:用 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是否提供了对应的工具可用,或者是否存在其它类似方法。



阅读(1646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~