2010-03-22 52 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程序中的錯誤。

我沒有嘗試過,但看着代碼審查的截圖,它可能是有用的