設置斷點:在以下圖中的紅色圓點處設置斷點,紅色圓點表示已經在這行設置斷點。快捷鍵F9。
啓動調試:按F5或者點擊左邊紅框中的按鈕。右邊框是開始執行(不調試)Ctrl+F5。php
調試工具欄:下面是工具欄中對應的名稱和快捷鍵。html
在調試過程當中F5是執行到下一個斷點。F11是逐語句,在執行到下圖中的斷點時,按F11會執行到Fibonacci方法裏面逐步記錄執行過程。F10是逐過程,與逐語句不一樣的是,在執行到下圖中斷點時,再執行會執行斷點下面的語句,而不是去執行語句中的方法。數組
局部變量:在調試過程當中能夠查看局部變量窗口,以下圖裏面會有變量的當前狀態。若是找不到的話在app
數組的狀態表示以下圖:工具
InteliTrace記錄每一步的調試狀態。url
條件中斷spa
開發人員設置斷點,運行程序,利用不一樣的輸入觸發斷點,而後在斷點處手工檢查是否知足某些特定的條件,從而決定是否繼續調查。若是當前場景不是他們想要的,按F5繼續運行程序,嘗試別的輸入,手動重複剛纔的過程。.net
針對上述狀況,Visual Studio提供了一個方便得多的功能——「條件中斷」。只有當程序知足了開發人員預設的條件後,條件斷點纔會被觸發,調試器中斷。這將避免頻繁地手工檢查/恢復程序運行,大量減小調試過程當中的手工和煩瑣工做。線程
如何設置條件斷點:調試
設置條件斷點很是容易。在特定的行上,按F9設置斷點。
而後右擊斷點–編輯窗口左側的紅點,在上下文菜單上選擇「條件」。
這時彈出一個對話框供你設置激活該斷點所需的條件。好比:咱們但願只有當x==5時,調試才中斷。咱們能夠寫出以下的表達式:
如今我再運行這個程序按F5達到條件斷點,只有當x等於5時,程序運行纔會被中斷。對於其它條件下的x值,斷點將被跳過。
記錄到達斷點次數
有時你但願,只有當第N次知足條件的運行到達斷點時,才中斷程序運行。例如:當第一次命中斷點。能夠經過右擊斷點,而後在彈出菜單上選擇「命中次數」菜單命令實現。
這時系統彈出一個對話框,它容許你指定:(1)當知足條件,並且進入斷點的累計次數等於N時,斷點命中一次。(2)當知足條件,並且進入斷點的累計次數是N的倍數時,斷點命中一次。(3)當知足條件,並且進入斷點的累計次數大於N時,每次命中斷點。
注意:若是多個條件同時用的話,結果取交集。
斷點篩選器
例如,在調試一個服務程序時在其內部打上了斷點,因爲這是一個公用的服務不但願其餘訪問這個服務的程序被所設斷點調試干擾,怎麼辦?斷點篩選器就是限制只在某些進程和線程中設置斷點。篩選器文本框中輸入如下一個或多個子句,可使用&(AND)、||(OR)、!(NOT)和圓括號組合這些子句描述應在何處設置斷點的表達式,或者清除該表達式以便在全部進程和線程中設置斷點。好比,但願斷點只在被機器名爲xye-PC的機器訪問時才觸發,咱們能夠右擊斷點進行斷點篩選器設置。當其餘機器訪問程序的時候斷點不會觸發,其餘機器訪問時感受不到斷點的存在。
跟蹤點—進入斷點時的自定義操做
許多人不知道「跟蹤點(TrackPoints)」這個調試功能。「跟蹤點「是種特殊的斷點,當它被命中時,它會觸發一系列自定義操做。若是你想觀察程序的行爲,而又不想中斷調試的時候,這個功能尤爲有用。
我將用一個簡單的控制檯程序來演示如何使用「跟蹤點」。以下是斐波那契數列的一個遞歸實現:
以上程序中,咱們使用Console.WriteLine() 輸出針對特定輸入值生成的最終斐波那契數列。若是但願在調試器裏觀察操做中每一次遞歸運算後的數列而又不實際中斷程序運行,該怎麼辦呢?「跟蹤點」能夠輕鬆實現。
設置跟蹤點:
你能夠在特定的行上,按F9加跟蹤點。而後右擊斷點,在上下文菜單中選擇「命中條件」:
在彈出對話框上,你能夠設置命中該斷點時,所觸發的事件。
在上面例子中,咱們設定一旦命中斷點時就打印追蹤信息。注意,咱們已經把局部變量「x」的值,做爲追蹤信息的一部分輸出。局部變量能夠經過{變 量名}語法輸出。你還能夠利用系統內置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追蹤信息中輸出經常使用的調試值。
在上例中,咱們同時選中了底端的「continue execution「選項,這說明咱們不但願程序中斷調試狀態,而是繼續運行。惟一的不一樣是:每次斷點條件知足時,咱們的自定義追蹤信息都將被輸出。
如今當咱們運行程序時,會發現自定義追蹤信息自動顯示在Visual Studio的「輸出「窗口裏。這讓咱們很容易看到程序的遞歸調用過程:
你也能夠選擇往應用程序中添加一個自定義追蹤信息的監聽器。這時追蹤點的輸出信息將經過它輸出,而不是Visual Studio的「輸出「窗口。