Visual Studio 2015中的常用调试技巧分享
.NET 技术交流群:337901356 欢迎您的加入!
为什么要学习调试?
调试(Debug)是作为一个程序员必须要学会的东西,学会调试可以极大的提高开发效率,排错时间,很多人不喜欢调试,但我认为这是一个很不可取的选择,调试的时候能让我们看到程序的执行顺序、步骤以及过程等,调试的时候可以让我们监视代码中各个变量的情况,调试让我们可以让我们快速的找出错误的根源。可见调试是至关重要的。
要学习好怎么调试,那么必须去了解VS 这个IDE中的各种调试技巧,下面我就讲讲我所经常在调试程序中所用到的技巧。
调试技巧介绍
1、监视窗口(Ctrl+D,Ctrl+W 快捷键开启)
我们在调试程序的过程中,可以通过此窗口动态查看各个变量的值,以及各个函数的调用的返回结果。
在监视窗口中,我们还可以手动更改某个变量的值,这个有时候很有用,特别是有时候程序执行到指定语句的时候,发现某个值是错误的,但是我们又想用一个正确值测试代码时,
此时可以通过监视窗口直接更改变量的值,而不需要重新启动调试。
快速监视:选中某个变量后者表达式,然后通过按下快捷键Ctrl+D,Ctrl+Q 开启。
备注:只能在调试情况下才能开启此窗口。

2、调用堆栈(Ctrl+D,Ctrl+C)
通过该窗口,我们可以看到函数的一级一级的调用过程,我们就可以知道,该方法是来自于上面的哪一个步骤发起的调用。、
可以通过点击调试->窗口->调用堆栈 来打开调用堆栈窗口。
如下图:

备注:只能在调试情况下在可以开启此窗口。
3、拖动调试光标的技巧。
Visual Studio 在调试的情况下可以拖动左侧的黄色箭头进行上下拖动,那么这个有什么作用呢,有时候我们可能想实用F11跟到某个方法里面进行调用过程的查看,结果一个不小心发现手误按下了F10,此时代码执行到了方法调用的下一句,那么我们此时就可以点击左侧的黄色箭头,并按住鼠标左键,往上一拖,这个时候,就又可以执行刚才的方法调用的那句代码了,如果往下拖,那么可以跳过一些语句代码的执行。

4、编辑并继续
通过启用编辑并继续,可以在调试代码的过程中直接更改部分代码,然后立刻执行最新的代码,而不需要重新启动调试程序。
但是这种方式在WEB应用程序中有个不好的地方就是,设置了启动编辑并继续之后,如果此时结束调试,那么网站或WEB应用程序将自动从IISExpress中退出,也就是此时再刷新网页,将会显示无法连接到网站,如果要在继续浏览其他页面,那么此时就要重新启动网站了。
不过,在Visual Studio 2015中,默认就是打开了编辑并继续功能,并且已经把编辑并继续的复选框给去掉了。
5、设置断点(F9 快捷键开启)
断点的好处在于,如果方法或者程序中包含了大量的代码,那么我们就可以设置到一个我们想让程序停下来的地方,通过F5可以快速的执行到下一个断点处。
当我们启动调试后,如果程序中有大量的断点,而我们只是想调试某一部分代码,那么或许有些人会一个一个断点去取消或者禁用,感觉够累,
其实是可以通过 点击 调试->禁用所有断点 或者调试->删除所有断点,如果你决定不需重新设置那些断点了,那么可以删除所有断点,否则建议先禁用所有断点,然后在你需要启用断点调试的地方再把那些断点启用。
有一个比较特殊的断点设置就是:条件断点
条件断点就是可以在设置一个表达式,只有表达式的值为true或者更改的时候,语句才会被命中。
看个例子。

6、F5按键的使用
Visual Studio 中,F5可以用来启动调试、也可以快速的将程序执行从一个断点执行到下一个断点处,往往有些新手会一句一句的执行进行调试,如果程序代码没几句还好,如果程序代码量多,或者碰到一个大循环的化,那要手按到何时才能执行到指定的想调试的代码处呢。
7、F10 逐过程
F10表示逐过程执行代码,什么是逐过程执行呢,通俗点说就是当执行到方法的语句时,调试不会进入到方法内部,而是一步将方法执行完毕。
8、F11 逐语句
F11是逐语句执行代码,那么如果碰到调用方法的语句时,那么通过F11可以进入到方法内部的执行过程。
9、切换完成模式
有时候你是不是发现手动打了一部分英文之后,那个智能提示框总是不能自动选中我们想要选中的,而是变成下面那样:
、
那么,你可以输入快捷键:Ctrl+Alt+空格键来切换到到选中模式。


总的来说主要的调试技巧就是这些,这里讲解的都是日常开发调试中个比较常用的,希望给新手们有所帮助。
Visual Studio 2015中的常用调试技巧分享的更多相关文章
- WebApi-路由机制 Visual Studio 2015中的常用调试技巧分享
WebApi-路由机制 一.WebApi路由机制是什么? 路由机制通俗点来说:其实就是WebApi框架将用户在浏览器中输入的Url地址和路由表中的路由进行匹配,并根据最终匹配的路由去寻找并匹配相应 ...
- [No0000A6]Visual Studio 2015 中的常用命令的默认键盘快捷键-VS2015 Shortcut
注意:你也可以通过打开"选项"对话框,展开"环境"节点,然后选择"键盘",查找任何命令的快捷键. Build(生成) 命令 键盘快捷键 [上 ...
- [.net 面向对象程序设计进阶] (27) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git
[.net 面向对象程序设计进阶] (26) 团队开发利器(六)分布式版本控制系统Git——在Visual Studio 2015中使用Git 本篇导读: 接上两篇,继续Git之旅 分布式版本控制系统 ...
- ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular. 自动运行任务,如LESS.JavaScript压缩.JSLint.Ja ...
- Visual Studio工具栏中无法选择调试设备
Visual Studio工具栏中无法选择调试设备 在Visual Studio工具栏中,默认显示已经识别的设备.用户可以从中选择对应的设备,进行调试和部署App.但是由于误操作,可能导致该选项丢失. ...
- GitHub在Visual Studio 2015中获得TFS/VSO同等地位
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 在Visual Studio 2015中微软为GitHub提供了扩展插件,从而让GitHub ...
- Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用 Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.cs ...
- ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用
Grunt和Gulp是Javascript世界里的用来做自动压缩.Typescript编译.代码质量lint工具.css预处理器的构建工具,它帮助开发者处理客户端开发中的一些烦操重复性的工作.Grun ...
- 微软移除Visual Studio 2015中的UML
微软已经在Visual Studio 2015中移除了UML(Unified Modeling Language,统一建模语言),原因是该语言使用率过低.因此微软要优化产品结构,把好钢用在刀刃上. V ...
随机推荐
- 【暑假】[深入动态规划]UVa 1628 Pizza Delivery
UVa 1628 Pizza Delivery 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51189 思路: ...
- 避免Java应用中NullPointerException的技巧和最佳实践
Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键.俗话说"预防胜于治疗",对于这么令人讨厌的空指针异常,这句话也是成立的.值得庆幸的是运用一 ...
- CF390-E. Inna and Large Sweet Matrix(区间更新+区间查询)
题意很好理解,不说了 题解就是每次把值压缩成一维,比如x上,这样就可以求出任意宽度的整个竖条的和. 如这张图,求的是s5-(s1+s3+s7+s9) 因为可以求出一整竖条和一整横条,我们可以求出是s2 ...
- soliworks三维机柜布局(四)进入solidworks中三维布线
首先需要在solidworks electrical中创建solidworks装配体文件. 菜单栏:处理--solidworks机柜布局--勾选要创建的装配体--点击确定 在文件列表下右键装配体文件- ...
- Bugs及解决方案列表
Bugs及解决方案列表(以下实例默认运行环境都为Standard mode): 如何在IE6及更早浏览器中定义小高度的容器? 方法: #test{overflow:hidden;height:1px; ...
- Jquery ajax 得到返回值
Jquery ajax 得到返回值 1.ajax默认是异步调用的,所以得到的返回值是空值,要得到值必须改成同步:async: false,//同步. 2.必须定义一个全局变量 var result = ...
- 【Stage3D学习笔记续】真正的3D世界(六):空间大战
这就是书上的最终效果了,一个完整的空间大战游戏: 点击查看源码 这里并没有太多的新知识,所涉及的东西更多的是游戏开发方面的优化和技巧,下面我们大家一起来看看: 飞船: 类似粒子效果中的粒子创建方法,我 ...
- java中调用dll文件的两种方法
一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676 JNativ ...
- DRM加密技术是怎么一回事
有时我们在播放从网上下载的影视文件时会要求输入用户许可证,否则就不能正常播放,听说是用了一种DRM技术,请简单介绍一下. 答:通常这是利用了多媒体DRM加密技术保护版权(DRM是数字权限管理技术的缩写 ...
- C#-获取datatable指定列的数据
DataTable dt = new DataTable(); da.Fill(dt); this.text ...