談?wù)撊绾握{(diào)用Visual Studio繼承樹窗口
經(jīng)過長時間學(xué)習(xí)調(diào)用Visual Studio繼承樹窗口,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。寫程序離不開調(diào)試,調(diào)試離不開理清程序的執(zhí)行流程。在以前的Visual Studio版本中,我們幾乎都是調(diào)試的時候通過調(diào)用棧來查找函數(shù)間的調(diào)用關(guān)系,幫助調(diào)試的。調(diào)用棧雖然好用,但是只能在調(diào)試時使用,同時也只能串行,只有一條執(zhí)行路徑。另外,隨著現(xiàn)代應(yīng)用程序越來越復(fù)雜,調(diào)用棧已經(jīng)無法滿足我們分析程序邏輯的需要。所以在Visual Studio 2010中,微軟為我們提供了新的程序邏輯分析工具:調(diào)用繼承樹(Call Hierarchy)窗口。
#t#體驗調(diào)用Visual Studio繼承樹窗口給我們帶來的便利,我們可以打開Visual Studio 2010 CTP虛擬機中自帶的示例項目DinnerNow – Management。在解決方案瀏覽器中,我們雙擊PSWorkflowMonitor.cs這個文件,將其在代碼編輯器中打開。然后找到其中的 LoadWorkflowInstance函數(shù),在這個函數(shù)上右鍵單擊,在彈出的上下文菜單中選擇“View Call Hierarchy”:
這樣,我們就可以打開LoadWorkflowInstance函數(shù)的調(diào)用Visual Studio繼承樹窗口:
在調(diào)用Visual Studio繼承樹窗口中,我們可以像“爬樹”一樣,在這棵調(diào)用繼承樹的各個節(jié)點和對應(yīng)的代碼之間任意跳轉(zhuǎn):
◆跳轉(zhuǎn)到代碼
在調(diào)用Visual Studio繼承樹窗口中,我們可以在函數(shù)上點擊右鍵,選擇彈出菜單中的“Go To Definition”,就可以直接跳轉(zhuǎn)到相應(yīng)的代碼。
同時我們可以注意到調(diào)用繼承窗口的右邊是“Detail Pane”,其中顯示了當(dāng)前選中函數(shù)所有的調(diào)用位置,我們只要雙擊其中的調(diào)用記錄,就可以跳轉(zhuǎn)到相應(yīng)的函數(shù)調(diào)用位置。
◆創(chuàng)建或者刪除調(diào)用繼承樹
當(dāng)程序比較復(fù)雜的時候,我們的調(diào)用繼承樹也會“枝繁葉茂”,這樣不利于我們的分析。在這種情況下,我們就可以把一個根節(jié)點中我們感興趣的子節(jié)點設(shè)置為新的根節(jié)點,這樣可以簡化調(diào)用繼承的深度,更加利于我們的分析。
◆改變調(diào)用繼承搜索的范圍
默認(rèn)情況下,調(diào)用繼承會搜索整個解決方案中的調(diào)用情況,如果我們的解決方案比較復(fù)雜,這就會使得調(diào)用繼承樹非常復(fù)雜,引入很多意義不大的調(diào)用關(guān)系。為了簡化調(diào)用繼承樹,我們可以改變調(diào)用繼承的搜索范圍,將其限制在解決方案,當(dāng)前項目或者當(dāng)前文檔。