日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2010断点设置技巧

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2010断点设置技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

***************************************************

更多精彩,歡迎進入:http://shop115376623.taobao.com

***************************************************


許多Visual Studio下的程序員,甚至一些很有經驗的開發人員,都不知道這些技巧。希望這篇文章能幫你掌握這些技巧。它們都很簡單,卻能幫你節約大量的時間。

一、跳到當前光標處(Ctrl+F10)

我經??吹饺藗優榱说竭_目標代碼位置,而在程序中早早設定了斷點,然后反復地按F10/F11,一步步走到目標代碼處。當程序員的確需要仔細觀察每一步的狀態變化時, F10/F11是合理的選擇。然而多數情況下,人們只想快速到達他們真正關心的代碼處,這時候F10/F11就不是最佳選擇了。

這時,你應該利用“跳到當前光標處”這個功能。先把光標定位在要測的目標代碼行上,再同時按Ctrl和F10,被測程序將直接跳到該行停下。你再也不用按許多次F10/F11了。即使目標代碼位于獨立的類或方法中,你仍然可以從當前正在檢查的地方跳過去。

二、條件中斷

另一種常見的情況是:開發人員設置斷點,運行程序,利用不同的輸入觸發斷點,然后在斷點處手工檢查是否滿足某些特定的條件,從而決定是否繼續調查。如果當前場景不是他們想要的,按F5繼續運行程序,嘗試別的輸入,手動重復剛才的過程。

針對上述情況,Visual Studio提供了一個方便得多的功能——“條件中斷”。只有當程序滿足了開發人員預設的條件后,條件斷點才會被觸發,調試器中斷。這將避免頻繁地手工檢查/恢復程序運行,大量減少調試過程中的手工和煩瑣工作。

如何設置條件斷點

設置條件斷點非常容易。在特定的行上,按F9設置斷點。

然后右擊斷點–編輯窗口左側的紅點,在上下文菜單上選擇“Condition…”。


這時彈出一個對話框供你設置激活該斷點所需的條件。比如:我們希望只有當局部變量paginatedDinners的尺寸小于10時,調試才中斷。我們可以寫出如下的表達式:


現在我再運行這個程序,實現搜索,只有返回值小于10時,程序運行才會被中斷。對于大于10的值,該斷點將被跳過。

三、記錄到達斷點次數

有時你希望,只有當第N次滿足條件的運行到達斷點時,才中斷程序運行。例如:當第五次返回少于10份晚餐的查詢結果時,中斷程序運行。
可以通過右擊斷點,然后在彈出菜單上選擇“Hit count…”菜單命令實現。

這時系統彈出一個對話框,它允許你指定:(1)當滿足條件,而且進入斷點的累計次數等于N時,斷點命中一次。(2)當滿足條件,而且進入斷點的累計次數是N的倍數時,斷點命中一次。(3)當滿足條件,而且進入斷點的累計次數大于N時,每次命中斷點。

四、機器/線程/進程過濾

設置如下:右擊斷點;在彈出菜單上選擇“Filter…”菜單命令;然后指定命中斷點的特定條件:在指定的機器上、或指定的進程中、或指定的線程中。

跟蹤點—進入斷點時的自定義操作

許多人不知道“跟蹤點(TrackPoints)”這個調試功能?!案欬c“是種特殊的斷點,當它被命中時,它會觸發一系列自定義操作。如果你想觀察程序的行為,而又不想中斷調試的時候,這個功能尤其有用。

我將用一個簡單的控制臺程序來演示如何使用“跟蹤點”。如下是Fibonacci數列的一個遞歸實現:

以上程序中,我們使用Console.WriteLine() 輸出針對特定輸入值生成的最終斐波那契數列。如果希望在調試器里觀察操作中每一次遞歸運算后的數列而又不實際中斷程序運行,該怎么辦呢?“跟蹤點”可以輕松實現。

設置跟蹤點

你可以在特定的行上,按F9加跟蹤點。然后
右擊斷點,在上下文菜單中選擇“When Hit…”:

在彈出對話框上,你可以設置命中該斷點時,所觸發的事件。

在上面例子中,我們設定一旦命中斷點時就打印追蹤信息。注意,我們已經把局部變量“x”的值,作為追蹤信息的一部分輸出。局部變量可以通過{變量名}語法輸出。你還可以利用系統內置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追蹤信息中輸出常用的調試值。

在上例中,我們同時選中了底端的“continue execution“選項,這說明我們不希望程序中斷調試狀態,而是繼續運行。唯一的不同是:每次斷點條件滿足時,我們的自定義追蹤信息都將被輸出。

現在當我們運行程序時,會發現自定義追蹤信息自動顯示在Visual Studio的“輸出“窗口里。這讓我們很容易看到程序的遞歸調用過程:

你也可以選擇往應用程序中添加一個自定義追蹤信息的監聽器。這時追蹤點的輸出信息將通過它輸出,而不是Visual Studio的“輸出“窗口。

五、跟蹤點—運行自定義的宏

當命中跟蹤點時,能否自動輸出所有的局部變量?

Visual Studio中并沒有這樣的內置功能,但我們可以寫一個自定義宏來實現,然后在命中跟蹤點時調用該宏。這個的實現需要先打開Visual Studio的宏編輯器(工具->宏->宏IDE菜單命令),然后在項目資源管理器的MyMacros節點下選擇一個模塊或創建新模塊(如:加個名為“UsefulThings”的模塊),再把下面的VB宏代碼貼到模塊中并保存。
Sub DumpLocals()
Dim outputWindow As EnvDTE.OutputWindow
outputWindow = DTE.Windows.Item(EnvDTE.Constants.vsWindowKindOutput).Object

Dim currentStackFrame As EnvDTE.StackFrame
currentStackFrame = DTE.Debugger.CurrentStackFrame

outputWindow.ActivePane.OutputString(“*Dumping Local Variables*” + vbCrLf)
For Each exp As EnvDTE.Expression In currentStackFrame.Locals
outputWindow.ActivePane.OutputString(exp.Name + ” = ” + exp.Value.ToString() + vbCrLf)
Next
End Sub
上述宏代碼將循環當前的堆棧,把所有的局部變量輸出到“輸出”窗口。

使用自定義的“DumpLocals”宏

然后,我們可以在如下的一個簡單程序中使用剛定制的“DumpLocals”宏了:

上述代碼中,我們用F9在“Add”方法的返回值處加了個斷點,然后右擊斷點,在彈出菜單上選擇“When hit”。

將顯示如下對話框。和之前不一樣, 我們不選“Print a message”選項,也不手工設定需要輸出的變量;而是選擇“Run a marco”復選框,并指定到我們上面創建的UsefulThings.DumpLocals宏上:

為了使程序能在命中跟蹤點后仍繼續運行,我們將繼續選中“continue execution”復選框。

運行程序

現在按F5運行程序,當“Add”方法被調用時,我們會在Visual Studio的“輸出”窗口中看到如下結果。注意命中跟蹤點時,宏會自動列出每個局部變量的名稱和值:

總結

以上是生活随笔為你收集整理的VS2010断点设置技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。