正如以前提到的,我將要寫VS裏關於全部不一樣的斷點功能的使用。第一部分,咱們討論命中計數斷點。若是你願意跟着我一塊兒嘗試,這裏有代碼。http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-45-48-92/ManagedBreakpointSamples.ziphtml
一個示例的問題數組
考慮下面方法,應用於一個基本的移位密碼字符串凱撒密碼(Caesar cipher),轉換密碼字符爲金額post
咱們設置一個斷點在返回語句上。如今讓咱們看看運行下面代碼會發生什麼。編碼
當咱們在斷點上停下,咱們觀察shiftArray數組,這時有一個問題。debug
剩下的整個編碼消息不能明顯的看出是什麼問題,咱們能夠看到’{’在3d
第35個位置上,明顯是錯誤的。咱們懷疑這個問題是在循環編碼中出現,因此咱們調查第36個循環體。若是咱們剛剛在循環裏設置了斷點,那麼在調至開始以前咱們將會停下再繼續35次!這就是用到命中計數斷點來處理的時候了。調試
建立一個命中計數斷點component
建立一個命中計數斷點首先要建立一個普通的斷點在你想調查的循環裏。
而後在斷點上點擊右鍵呼出菜單。server
而後點擊「Hit Count…」呼出一個命中計數對話框。htm
如今設置下拉框從「break always」到「break when the hit count is equal to」 而後輸入36
而後點擊「OK」你將看到這個斷點圓圈裏面有個「+」表示是一個高級斷點。
如今當你在調試狀態下啓動程序,會當即停到修改shiftArray[35]的值的代碼上。
而後下一部,我看倒了問題所在,這個字符是移除最後的字母。
可是當我再次下一步,我看倒它跳過了這段應該從字母表裏去掉字母的代碼。
到如今爲止我已經發現個人問題了。這裏應該是shiftArray[i]>=123 ,我發現這樣作遠比我使用普通的斷點要快。
跳過一段命中
命中計數斷點還可用在你須要在跳過你正在執行的代碼處,可是你不是十分準確的清楚跳多遠。
考慮下面遞歸方法計算最大公約數。
做爲一個開發者,你可能要debug這個方法爲了看中間計算的值。給你兩個很是大的數。你知道這個方法可能要運行很長時間。可是你不知道有多久。
這種狀況你能夠用計數斷點來節省你一些時間。
同上,右鍵點擊斷點選擇「hit count…」呼出hit count 對話框。
這時選擇「bread when the hit count is greater than or equal to option」 而後輸入10
這樣將會讓你跳過前10次該調用,讓你離你想到的地方更近。如今調用這個方法用下面倆個數。
運行到斷點處,停在較小的數x和y上,我能夠跟它剩下的計算了。
而後若是我繼續運行,這個應用程序將會繼續在以後的每次命中停在斷點上。
我甚至能夠點擊reset按鈕來避免斷點停在另外一個10次後。
計算迭代
最後,命中計數斷點還能夠用來簡單的計數斷點命中次數。如今咱們想計算一下這個求最大公約數方法迭代的次數,同上建立斷點選擇「break when the hit count is greater than or equal to 」
輸入任意大的數字好比99999。
這麼大的號碼,斷點確定不會停。如今設置另外一個斷點在計算結束後的某個地方,當你在斷點停下時,你能夠看到計數斷點窗口
(available from the Debug -> Windows menu).
So you know that the program went through the function 14 times.