命中计数断点

正如以前提到的,我将要写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.

相关文章
相关标签/搜索