您好、欢迎来到现金彩票网!
当前位置:秒速牛牛 > 条件断点 >

VS2010断点设置技巧

发布时间:2019-07-03 07:26 来源:未知 编辑:admin

  许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧。希望这篇文章能帮你掌握这些技巧。它们都很简单,却能帮你节约大量的时间。

  我经常看到人们为了到达目标代码位置,而在程序中早早设定了断点,然后反复地按F10/F11,一步步走到目标代码处。当程序员的确需要仔细观察每一步的状态变化时, F10/F11是合理的选择。然而多数情况下,人们只想快速到达他们真正关心的代码处,这时候F10/F11就不是最佳选择了。

  这时,你应该利用“跳到当前光标处”这个功能。先把光标定位在要测的目标代码行上,再同时按Ctrl和F10,被测程序将直接跳到该行停下。你再也不用按许多次F10/F11了。即使目标代码位于独立的类或方法中,你仍然可以从当前正在检查的地方跳过去。

  另一种常见的情况是:开发人员设置断点,运行程序,利用不同的输入触发断点,然后在断点处手工检查是否满足某些特定的条件,从而决定是否继续调查。如果当前场景不是他们想要的,按F5继续运行程序,尝试别的输入,手动重复刚才的过程。

  针对上述情况,Visual Studio提供了一个方便得多的功能——“条件中断”。只有当程序满足了开发人员预设的条件后,条件断点才会被触发,调试器中断。这将避免频繁地手工检查/恢复程序运行,大量减少调试过程中的手工和烦琐工作。

  然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择“Condition…”。

  这时弹出一个对话框供你设置激活该断点所需的条件。比如:我们希望只有当局部变量paginatedDinners的尺寸小于10时,调试才中断。我们可以写出如下的表达式:

  有时你希望,只有当第N次满足条件的运行到达断点时,才中断程序运行。例如:当第五次返回少于10份晚餐的查询结果时,中断程序运行。

  可以通过右击断点,然后在弹出菜单上选择“Hit count…”菜单命令实现。

  这时系统弹出一个对线)当满足条件,而且进入断点的累计次数等于N时,断点命中一次。(2)当满足条件,而且进入断点的累计次数是N的倍数时,断点命中一次。(3)当满足条件,而且进入断点的累计次数大于N时,每次命中断点。

  设置如下:右击断点;在弹出菜单上选择“Filter…”菜单命令;然后指定命中断点的特定条件:在指定的机器上、或指定的进程中、或指定的线程中。

  许多人不知道“跟踪点(TrackPoints)”这个调试功能。“跟踪点“是种特殊的断点,当它被命中时,它会触发一系列自定义操作。如果你想观察程序的行为,而又不想中断调试的时候,这个功能尤其有用。

  我将用一个简单的控制台程序来演示如何使用“跟踪点”。如下是Fibonacci数列的一个递归实现:

  以上程序中,我们使用Console.WriteLine() 输出针对特定输入值生成的最终斐波那契数列。如果希望在调试器里观察操作中每一次递归运算后的数列而又不实际中断程序运行,该怎么办呢?“跟踪点”可以轻松实现。

  在上面例子中,我们设定一旦命中断点时就打印追踪信息。注意,我们已经把局部变量“x”的值,作为追踪信息的一部分输出。局部变量可以通过{变量名}语法输出。你还可以利用系统内置的命令($CALLER, $CALLSTACK, $FUNCTION等等),在追踪信息中输出常用的调试值。

  在上例中,我们同时选中了底端的“continue execution“选项,这说明我们不希望程序中断调试状态,而是继续运行。唯一的不同是:每次断点条件满足时,我们的自定义追踪信息都将被输出。

  现在当我们运行程序时,会发现自定义追踪信息自动显示在Visual Studio的“输出“窗口里。这让我们很容易看到程序的递归调用过程:

  你也可以选择往应用程序中添加一个自定义追踪信息的。这时追踪点的输出信息将通过它输出,而不是Visual Studio的“输出“窗口。

  Visual Studio中并没有这样的内置功能,但我们可以写一个自定义宏来实现,然后在命中跟踪点时调用该宏。这个的实现需要先打开Visual Studio的宏编辑器(工具-宏-宏IDE菜单命令),然后在项目资源管理器的MyMacros节点下选择一个模块或创建新模块(如:加个名为“UsefulThings”的模块),再把下面的VB宏代码贴到模块中并保存。

  然后,我们可以在如下的一个简单程序中使用刚定制的“DumpLocals”宏了:

  上述代码中,我们用F9在“Add”方法的返回值处加了个断点,然后右击断点,在弹出菜单上选择“When hit”。

  将显示如下对话框。和之前不一样, 我们不选“Print a message”选项,也不手工设定需要输出的变量;而是选择“Run a marco”复选框,并指定到我们上面创建的UsefulThings.DumpLocals宏上:

  为了使程序能在命中跟踪点后仍继续运行,我们将继续选中“continue execution”复选框。

  现在按F5运行程序,当“Add”方法被调用时,我们会在Visual Studio的“输出”窗口中看到如下结果。注意命中跟踪点时,宏会自动列出每个局部变量的名称和值:

  1、注释和反注释的快捷键:  注释:ctrl+k、 ctrl+c;  反注释:ctrl+k、 ctrl+u.2.用vs进行程序的编写一定要注意调试,c语言的对于各类型变量要求严格,不像Python那样...博文来自:的博客

  (1)目前最新的opencv库为opencv3.0.0库,其下载地址为:最新的可能达到了vs2015,考虑软件太大,且opencv中...博文来自:我爱智能

  (1)、在需要暂停的位置设置断点(方法一:将鼠标置于将要设置断点的行,按F9或在调试中选择设置断点;方法二:单击将要设置断点的代码行的左侧边区域),如下图所示:(2)、点击“开始调试”或F5,进行调试...博文来自:千里之行,始于足下

  出现问题:在VS2010中打开由CMake生成的工程文件,包含ALL_BUILD、***(编译的项目文件)和ZERO_CHECK三个项目。编译的时候出现错误提示:无法启动程序,无法找到文件XXX\AL...博文来自:长风破浪会有时,直挂云帆济沧海

  1.在需要设置断点的代码前双击,再次双击则取消22.点击图中红框处启动3.启动后,打开网页,运行到对应处,进入断点...博文来自:阿休要努力

  首先,本文是普通入门知识篇,主要说的是断点的设置。很多想接触响应式的同学都会有以下疑惑:为什么要做响应式?怎么入门响应式,是不是很难?分辨率那么多,响应式断点怎么设置?所以本文简单说下下手响应式的一些...博文来自:夜亡者的博客

  OD常用的断点有:INT3断点,硬件断点,内存断点,消息断点,条件断点。一3断点   1.在CPU窗口,按F2或双击“Hexdump”列设置一个INT3断点,再次按F2或双击“Hexdump”...博文来自:LDWJ2016的博客

  半个月前有一篇关于VS2010使用技巧的帖子包括快捷键等,虽然不是精华帖,但是回复率超高的,不知道那位看到过,麻烦贴个地址好吗?新手很想知道。。。论坛

  在使用vs2010进行调试时,按F5进行调试,F10是进行下一步,F11是进入该方法,shift+F11是跳出该方法上一步是:...博文来自:爱喜乐生命

  断点的设置,本质上就是动态调试时,在大量代码中快速找到关键代码的过程。在Android逆向过程中,设置断点有两个思路:一)。顺流程思路拿登录流程来说,必定有用户名及密码输入框以及登录按钮!顺流程思路的...博文来自:weixin_37556843的博客

  如何选择断点?(来源)根据内容创建断点,绝对不要根据具体设备、产品或品牌来创建。从针对最小的移动设备进行设计入手,然后随着屏幕类型不断增加而逐渐改善体验。使每行的文字最多为70或80个字符左右。以小屏...博文来自:董豪强的专栏

  编译环境vs2017(win10),在实现3D游戏编程大师技巧第三章的代码时不出意料地出现了大量的编译问题,花了一天时间以及在网上查找了很多的资料,终于解决了,下面是我的解决方案(不一定适用于所有人)...博文来自:ryan_qmz的博客

  1、设置断点条件,当符合条件时,调试时才会在该断点出停止;如下图,当符合条件isMultipart==false时,才会在153行的断点处停止;2、条件断点的设置在断点处右键,即弹出条件设置窗口......博文来自:u010865136的专栏

  我在一个对话框程序中设置断点,调试时却报告一个或多个断点无法设置,程序在开始运行时停止。请问如何解决?谢谢。论坛

  visualc++条件断点设置在调试代码的过程当中,经常遇到在大的循环中结果异常的现象,这时候我们需要将循环中断在循环变量的某个中间值,此时基于条件断点的中断、调试就派上用场了。以如下代码为例,假设b...博文来自:luzhanbo207的博客

  运行后断点不能停下,提示“源代码与原始版本不同”!rn今天只是修改了几行代码而已,编译通过,一直都没问题,突然不能调试!!!rn试了很多方法都不行,大家有什么好办法吗?论坛

  VS调试中经常使用断点、堆栈窗口,很少使用监视、快速监视窗口和即时命令窗口。查找了相关资料后发现监视窗口在某些情况下还是很有用的,所以针对上述窗口大体总结了一下;1.添加监视变量程序执行过程中命中断点...博文来自:硕硕的博客

  使用@media可以针对不同的屏幕尺寸设置不同的样式,实现响应式页面开发。同样,重置浏览器大小时,会重新渲染页面。这里做一个简单的总结,如下为参考链接:博文来自:IT诗人

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  这一篇,代码折腾的时间较长,完成之后都是一些小细节,主要有三:n1、引入的依赖错误;n2、启动配置错误;n3、xml文件的mapper命名空间错误。n一、完整的pom.xmlnn...博文来自:lxhjh的专栏

  本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。1、 Esp8266之 搭建开发环境,开始一个“hellow worl...博文来自:徐宏的博客。

  扫二维码关注,获取更多技术分享nnn 本文承接之前发布的博客《 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付》必须阅读上篇文章后才可以阅读这篇文章。由于最近一段时间工作比较忙,...博文来自:Marswill

  采用EasyUI 1.4.x 版本,默认default风格,异步加载页面,多Tab页展示,使用JSON文件模拟从后台动态获取数据。...博文来自:般若

  DirectX修复工具API Sets强力修复实验包下载地址:nn密码:5y5vnnnn实验包使用说明...博文来自:VBcom的专栏

  接着上次的图书管理系统rnrn修改完问题后把SpringBoot成功部署到了服务器上rn测试了下api接口,能正常访问rn那么下面就是在服务器上部署前端的vue.js了rnrnrn这里的话我们要明确一...博文来自:小时的枫的博客

http://mone8.com/tiaojianduandian/443.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有