2010-08-18 194 views

回答

3

每次調用方法時,都會在該線程的「堆棧」上放置一個條目,用於描述用於調用該方法的方法和參數。當方法返回時,該方法及其參數將從堆棧中移除。這就是操作環境知道方法完成時返回的位置。它只是從棧中刪除頂層條目,清除在該棧幀期間創建的任何局部變量,並返回到前一個方法。 (這是過於簡化,但通常是這個想法。)

你可以把它看作是一個「堆棧」的指令,讓你在這裏。

這就是對操作環境的意義。

對於開發人員來說,實際目的是幫助您理解程序處於所處狀態的原因。只要程序在調試程序中停止執行,可以通過斷點或拋出異常來執行(具體取決於您的Visual Studio設置),您將有權訪問當前的堆棧。請記住,此堆棧並不顯示所有已調用到此點的方法。任何完成的方法都從堆棧中移除。這不是日誌。

您可以雙擊堆棧中的任何條目以轉到該源代碼(如果它在您的計算機上可用)。當你在那裏時,你可以檢查局部變量等。這是一種偵測工具,可以幫助你找出到目前爲止你的程序中發生了什麼。

7

當您的代碼中斷(即拋出異常時),堆棧跟蹤窗口將向您顯示在引發異常的方法之前調用的所有方法,包括每種方法的參數以及這些方法的狀態參數。這使得調試更容易,尤其是在更復雜的調用圖中(即,當您無法通過查看調用其他方法/屬性/函數的代碼來確定時)。只需嘗試一下,在你的代碼(F9)的某處放置一個斷點,運行你的代碼,等待斷點被命中,然後打開堆棧窗口。您將看到所有呼叫到當前線路。您可以雙擊堆棧跟蹤窗口中的每個條目,並且光標將在其上跳轉。

如果您想知道:灰線是沒有源代碼或符號加載的方法調用。您可以右鍵單擊這些行並選擇加載符號以加載符號。

1

調用堆棧中的目的是讓您準確查看調用導致問題發生的原因。

當您查看異常中的堆棧跟蹤時,可以看到導致錯誤發生的原始調用。

在Visual Studio中進行調試時,可以上下瀏覽調用堆棧以查看應用程序在不同級別存儲的值。它在調試應用程序到達狀態時很有用。

1

調用堆棧窗口的目的是爲您提供訪問當前指令的完整代碼路徑。您可以使用它來導航到程序中的以前的函數調用,檢查局部變量,參數等等。它是確定代碼爲什麼要執行的非常寶貴的工具。

相關問題