命中計數斷點

正如以前提到的,我將要寫VS裏關於全部不一樣的斷點功能的使用。第一部分,咱們討論命中計數斷點。若是你願意跟着我一塊兒嘗試,這裏有代碼。http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-components-postattachments/00-10-45-48-92/ManagedBreakpointSamples.ziphtml

一個示例的問題數組

考慮下面方法,應用於一個基本的移位密碼字符串凱撒密碼(Caesar cipher),轉換密碼字符爲金額post

5710_clip_image001_thumb_23F4A34E

咱們設置一個斷點在返回語句上。如今讓咱們看看運行下面代碼會發生什麼。編碼

5710_clip_image001_thumb_23F4A34E

當咱們在斷點上停下,咱們觀察shiftArray數組,這時有一個問題。debug

5710_clip_image001_thumb_23F4A34E

剩下的整個編碼消息不能明顯的看出是什麼問題,咱們能夠看到’{’在3d

第35個位置上,明顯是錯誤的。咱們懷疑這個問題是在循環編碼中出現,因此咱們調查第36個循環體。若是咱們剛剛在循環裏設置了斷點,那麼在調至開始以前咱們將會停下再繼續35次!這就是用到命中計數斷點來處理的時候了。調試

建立一個命中計數斷點component

建立一個命中計數斷點首先要建立一個普通的斷點在你想調查的循環裏。

4743_clip_image004_thumb_675CA4B0

而後在斷點上點擊右鍵呼出菜單。server

4743_clip_image004_thumb_675CA4B0

而後點擊「Hit Count…」呼出一個命中計數對話框。htm

4743_clip_image004_thumb_675CA4B0

如今設置下拉框從「break always」到「break when the hit count is equal to」 而後輸入36

4743_clip_image004_thumb_675CA4B0

而後點擊「OK」你將看到這個斷點圓圈裏面有個「+」表示是一個高級斷點。

7384_clip_image008_thumb_7B75C139

如今當你在調試狀態下啓動程序,會當即停到修改shiftArray[35]的值的代碼上。

3107_clip_image009_thumb_2243D77A

而後下一部,我看倒了問題所在,這個字符是移除最後的字母。

3107_clip_image009_thumb_2243D77A

可是當我再次下一步,我看倒它跳過了這段應該從字母表裏去掉字母的代碼。

3107_clip_image009_thumb_2243D77A

到如今爲止我已經發現個人問題了。這裏應該是shiftArray[i]>=123 ,我發現這樣作遠比我使用普通的斷點要快。

 

跳過一段命中

命中計數斷點還可用在你須要在跳過你正在執行的代碼處,可是你不是十分準確的清楚跳多遠。

考慮下面遞歸方法計算最大公約數。

3107_clip_image009_thumb_2243D77A

做爲一個開發者,你可能要debug這個方法爲了看中間計算的值。給你兩個很是大的數。你知道這個方法可能要運行很長時間。可是你不知道有多久。

這種狀況你能夠用計數斷點來節省你一些時間。

同上,右鍵點擊斷點選擇「hit count…」呼出hit count  對話框。

這時選擇「bread when the hit count is greater than or equal to option」 而後輸入10

3107_clip_image009_thumb_2243D77A

這樣將會讓你跳過前10次該調用,讓你離你想到的地方更近。如今調用這個方法用下面倆個數。

3107_clip_image009_thumb_2243D77A

運行到斷點處,停在較小的數x和y上,我能夠跟它剩下的計算了。

3107_clip_image009_thumb_2243D77A

而後若是我繼續運行,這個應用程序將會繼續在以後的每次命中停在斷點上。

3107_clip_image009_thumb_2243D77A

我甚至能夠點擊reset按鈕來避免斷點停在另外一個10次後。

計算迭代

最後,命中計數斷點還能夠用來簡單的計數斷點命中次數。如今咱們想計算一下這個求最大公約數方法迭代的次數,同上建立斷點選擇「break when the hit count is greater than or equal to 」

輸入任意大的數字好比99999。

3107_clip_image009_thumb_2243D77A

這麼大的號碼,斷點確定不會停。如今設置另外一個斷點在計算結束後的某個地方,當你在斷點停下時,你能夠看到計數斷點窗口

(available from the Debug -> Windows menu).

2313_clip_image020_thumb_32036C7E

So you know that the program went through the  function 14 times.

相關文章
相關標籤/搜索