堆疊框架檢查範例

更新: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 類別一部分的功能。本範例會示範其他兩個類別:StackTraceMethodInfoStackTrace 的無參數建構函式會傳回一組完整的 StackFrame 物件,提供從您的應用程式啟動時的資訊。您也可以使用採取 Exception 執行個體的 StackTrace 建構函式。這個建構函式會將堆疊追蹤資訊提供給觸發例外狀況的程式碼。

[測試程序堆疊] 按鈕的事件處理常式包含用以呼叫數個方法的程式碼,這些方法會導致堆疊有數層深。按一下 [測試程序堆疊] 按鈕會呼叫 [ProcA],接著由它呼叫 [ProcB]。[ProcB] 會呼叫在新 StackTrace 物件中傳遞的 [GetFullStackFrameInfo] 程序:

GetFullStackFrameInfo(New StackTrace()) 

在 GetFullStackFrameInfo 程序中,程式碼使用 StackTrace 物件的 FrameCount 屬性,擷取堆疊框架 (Stack Frame) 總數,同時從目前的程序向後運作。然後,此程序會將每個堆疊框架的相關資訊加入至範例上的清單方塊,並呼叫 GetFrame 方法來擷取索引堆疊框架物件。

GetStackFrameInfo 程序會在程式碼傳送給它的 StackFrame 物件上呼叫 GetFrame,然後擷取 MethodInfo 物件的屬性,以顯示清單方塊中程序的相關資訊。

[測試例外處理] 按鈕的事件處理常式會在向下數層的堆疊上產生錯誤。這個程式碼會觸發例外狀況,然後將該例外狀況傳遞至 StackFrame 物件的建構函式。

請參閱

參考

System.Diagnostics

StackFrame

System.Reflection

MethodInfo

FrameCount