2010-06-19 78 views
2

我有一個調試函數,在大型程序的幾乎所有函數中調用。它們被一個已定義的宏變量有條件地打開。我不希望這些顯示在調用圖中,因爲我可以確信每個函數都有它們。有沒有辦法從圖形如何從Doxygen的調用圖中排除函數?

/*! Step 3: 
* @callgraph 
*/ 
void step3(double * phi, //... 
{ // CODE: 
/// inner_quadratic_form: 
/// \f$ s = (\phi_j^{\mathrm{(old)}})^T \Sigma_{\alpha\alpha} \phi_j^{\mathrm{(old)}}+1 \f$ 
double s = 1.0;debug_arg(s); 
inner_quadratic_form(&s, old_phi_row, &one, ka, Saa, ka, dl, dp); 
s+=1.0;debug_arg(s); 
} 

例如排除功能,inner_quadratic形式需要在調用圖,但debug_arg(s)沒有。我認爲這與已經存在的不同,因爲我需要記錄debug_arg,但不會出現在調用圖中。

回答

1

你如何有條件地禁用debug_arg()?如果debug_arg()是這樣定義一個宏:

#if defined INCLUDE_DEBUG 
#define debug_arg(s) debug_arg_function(s) 
#else 
#define debug_arg(s) 
#endif 

然後,只要你不要在代碼中或在Doxygen的配置中指定INCLUDE_DEBUG,那麼就沒有函數調用來記錄。

最好在命令行而不是代碼中指定INCLUDE_DEBUG,這樣就不必更改代碼來構建文檔。

+1

這適用於調試代碼,這就是它們如何定義的。還有一些特殊的幫助函數執行特殊的功能,如分配內存的特殊處理,我不能關閉,但我真的不需要在調用圖中。如果有一種方法可以指定它的函數文檔,如\ ExcludeFromCallGraph,這將不會出現在調用圖中。 – 2010-06-19 21:20:39