2010-03-22 55 views
5

我正在寻找一种工具来告诉/解决每个函数的所有调用路径(称之为“路由”)。C++函数调用路由解析器

例如:

void deeper(int *pNumber) 
{ 
*pNumber++; 
} 
void gateA(int *pNumber) 
{ 
deeper(pNumber); 
} 
void gateB(int *pNumber) 
{ 
gateA(pNumber); 
} 

void main() 
{ 
int x = 123; 
gateA(&x); 
gateB(&x); 
} 

看到了吗? 我需要一个工具来告诉我所有的路径更深(),如果可能的话更多。

通过说“more”我的意思是它会告诉我指针是否与提供给调用函数相同。

这将大大节省我的时间。 谢谢!

+1

是否必须在特定平台上运行(在Windows,Mac OSX,Linux和OpenBSD的,OpenSolaris的,无论)? – 2010-03-22 18:07:23

+1

它是否必须检测间接调用,例如通过函数指针或虚拟调用? – 2010-03-22 18:31:15

+0

@David:我正在使用Windows。对我来说就够了。 @Rob:我不希望这样的功能,虽然这会大大提高工具的流行度(: 似乎这里的人已经提出了很好的解决方案,稍后会检查它 – Poni 2010-03-22 22:48:11

回答

5

Doxygen将为您做到这一点。它会给你带来很好的继承树,并向你展示每个正在调用(并由你的函数调用)的人。

+0

我打算暗示自己。 – 2010-03-22 18:07:03

6

我认为cppDepend具有该功能(与其他代码分析功能一起)

1

你可以看看clang analyzer

铛静态分析器是源代码分析工具,可以找到C/C++和Objective-C程序中的错误。

我没有尝试过,但看着代码审查的截图,它可能是有用的