堆疊框架檢查範例
更新:2007 年 11 月
這個範例會示範如何以程式設計方式從執行的程式碼內,擷取任何點中的呼叫堆疊的相關資訊。堆疊可供您判斷在到達目前程序之前,應用程式所執行的程序順序。
若要取得範例及其安裝指示
請執行下列其中一項或多項作業:
按一下 [說明] 功能表上的 [範例]。
讀我檔案會顯示範例的相關資訊。
造訪 Visual Studio 2008 範例 網站 (英文)。您可以在此找到最新版的範例。
在已安裝 Visual Studio 的電腦中尋找範例。根據預設,範例和讀我檔案會安裝在 drive:\Program Files\Microsoft Visual Studio 9.0\Samples\lcid 中。如果是 Visual Studio Express 版,則所有範例都能在線上找到。
如需詳細資訊,請參閱尋找範例檔案。
安全性注意事項: |
---|
範例程式碼可說明整個概念,並顯示和此概念相關的程式碼。此程式碼可能不符合特定環境的安全性要求,您也不應該以範例所示的方法使用此程式碼。我們建議您新增安全性及錯誤處理程式碼,讓您的專案更安全完善。Microsoft 提供的程式碼未經修改,並且不對任何可能造成的後果負任何責任。 |
若要執行這個範例
- 按 F5。
示範
.NET Framework 會提供做為 StackFrame 類別一部分的功能。本範例會示範其他兩個類別:StackTrace 和 MethodInfo。StackTrace 的無參數建構函式會傳回一組完整的 StackFrame 物件,提供從您的應用程式啟動時的資訊。您也可以使用採取 Exception 執行個體的 StackTrace 建構函式。這個建構函式會將堆疊追蹤資訊提供給觸發例外狀況的程式碼。
[測試程序堆疊] 按鈕的事件處理常式包含用以呼叫數個方法的程式碼,這些方法會導致堆疊有數層深。按一下 [測試程序堆疊] 按鈕會呼叫 [ProcA],接著由它呼叫 [ProcB]。[ProcB] 會呼叫在新 StackTrace 物件中傳遞的 [GetFullStackFrameInfo] 程序:
GetFullStackFrameInfo(New StackTrace())
在 GetFullStackFrameInfo 程序中,程式碼使用 StackTrace 物件的 FrameCount 屬性,擷取堆疊框架 (Stack Frame) 總數,同時從目前的程序向後運作。然後,此程序會將每個堆疊框架的相關資訊加入至範例上的清單方塊,並呼叫 GetFrame 方法來擷取索引堆疊框架物件。
GetStackFrameInfo 程序會在程式碼傳送給它的 StackFrame 物件上呼叫 GetFrame,然後擷取 MethodInfo 物件的屬性,以顯示清單方塊中程序的相關資訊。
[測試例外處理] 按鈕的事件處理常式會在向下數層的堆疊上產生錯誤。這個程式碼會觸發例外狀況,然後將該例外狀況傳遞至 StackFrame 物件的建構函式。