11个强大的 Visual Studio 调试技能
简介
调试是软件开辟周期中很首要的一项目组。它具有挑衅性,同时也很让人困惑和懊恼。总的来说,对于稍大一点的法度,调试是不成避免的。比来几年,调试对象的成长让很多调试任务变的越来越简单和省时。
这篇文章总结了可能节俭你多量时候的十个visual studio的调试技能和办法。
1 悬停鼠标查看表达式值

调试是很有挑衅性的。比如在函数内慢慢运行可以看出哪里失足,查看客栈信息可以知道函数被谁调用等等。。。
然则无论哪种景象下,查看表达式和局部变量的值都是很麻烦的(把表达式和局部变量放到watch窗口里)。
一种更简单的办法,把鼠标停在所需查看的数据上。若是是类或布局,那么点击展开可以很便利快速地查看其字段。
2 在运行过程中改变变量值

调试器不仅仅是解析法度溃散和诡异行动的对象,还可以经由过程慢慢调试搜检数据和行动是否合适法度预期的办法解决很多bug。有时,你会想是否设置某些前提为真,法度就能正确运行了。其实你只要把鼠标移动到变量上,双击值,然后输入你须要的值。如许就不须要批改代码,重启法度了。
3 设置下一个运行地位

一个典范的调试案例是我们经常会用慢慢调试的办法去解析为什么函数失足了。这时你碰到这个函数调用其他函数返回错误,而这个错误不是你想要的,你该怎么办?重启调试器?这里有个更好的办法,直接把的运行地位箭头拖到你想要的运行地位。其实就是跳过中心运行代码,直接到想要的地位。很简单吧。
4 编辑然后持续运行

在运行一个很错杂的法度和插件时,发明一个错误,然则不想浪费时候去重编译重启动法度。
很简单,只要在这个地位批改这个bug,然后持续调试。Visual studio会批改这个法度,使得你可以持续调试而不须要重启法度。
值得重视的是“编辑然后持续运行”这个功能有几个限制。一,它不克不及在64位代码上应用。若是想应用这个功能,到项目设置里的编译选项,选择”x86”作为目标平台。不要愁闷,这目标平台在reslease设备是和”debug是分别的,也就是说依然是”Any CPU”的设置。二,“编辑然后持续运行”这个功能仅实用于一个函数内部改变。若是你想要改变这个函数的声明或者增长新的办法,你只能选择重启法度,或者不做任何改变持续。若是批改的办法中包含lambda表达式,则意味着批改了编译器主动生成的委托类型,如许会导致编译器停止运行。
5 一个便利的查看窗口

大项目组现代的调试器都有查看窗口。然则,visual studio的查看窗口应用希罕简单,你能很便利的增长和删除变量。只要在窗口里点击空白行,输入表达式然后按enter键。或者点击表达式,按键删除不须要的表达式。
在调试窗口不仅仅可以查看通俗的变量值,甚至可以输入¥handles去追踪打开的句柄数量,¥err去查看函数的错误代码(然后应用 Tools->Error 查看错误代码的描述)或者输入 @eax(在64位下是@rax )查看包含函数返回值的存放器值。
6 注释反汇编

应用内部的反汇编功能使得优化局部代码加倍简单。Visual studio可以在你的每一行代码下显示汇编指令,并且可以慢慢调试汇编代码,也可以在随便率性地位设置断点。查看和批改汇编代码类似于c++。
7 客栈信息的线程窗口

调试多线程代码是很疾苦的。或许也是有趣的。这取决于你的调试器。Visual studio 一个很赞的功能就是在线程窗口查看线程的客栈信息。你能很便利的直接看到所有线程以及他们的客栈信息。
8 前提断点

若是你想重现一个小概率事务,然则断点在多量不须要的前提下也会触发。你可以很简单的设置前提断点。在断点窗口设置该断点前提,Visual studio 会主动忽视不合适前提的断点。
9 内存窗口

一些bug是由错误的布局定义、缺乏对齐属性等原因引起的。查看每行内存的内容很轻易定位和解决这些bug. Visual studio 的内存窗口可以把数据翻译成8/16/32/64-bit数字或者浮点数。你可以在编辑窗口直接改变数值。
10 跳转到定义

若是你在解决别人写的代码一个bug,会碰到“这个类型是什么”“这个函数做什么的”之类的题目,你可以应用visual studio的跳转到定义的号令来查看类型或函数的定义。
11 号令窗口

这个小技能是由chaau建议的,它能节俭你多量的时候。Visual studio支撑一个号令窗口,你可以经由过程菜单View->Other Windows->Command Window 打开。你可以在窗口里输入不合号令使调试主动化。比如,可以经由过程很简单的号令去的测试MFC的COleDateTime变量。
11个强大的 Visual Studio 调试技能的更多相关文章
- 11个强大的Visual Studio调试小技巧
简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...
- 11个强大的Visual Studio调试小技巧(转)
简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...
- 新手必备!11个强大的 Visual Studio 调试技巧
简介 调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总 ...
- 12个Visual Studio调试效率技巧
在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...
- Visual Studio调试之断点基础篇
Visual Studio调试之断点基础篇 我曾经问过很多人,你一般是怎么调试你的程序的? F9, F5, F11, F…… 有很多书和文章都是介绍怎么使用Visual Studio编写WinForm ...
- Visual Studio 调试方法
1:命令窗口 CTRL + D + I,可以在立即窗口中写一些临时的代码 2:编辑并继续 选中下面的选项,可以让你在调试暂停中,修改代码,而不用重新启动, 3:执行 单步执行:F10 跳进方法:F11 ...
- Visual Studio 调试(系列文章)
调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...
- Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序
系列目录 [已更新最新开发文章,点击查看详细] 要调试已部署到IIS的ASP.NET应用程序,请在部署应用程序的计算机上安装并运行远程工具,然后从Visual Studio附加到正在运行的应用 ...
- Visual Studio 调试系列9 调试器提示和技巧
系列目录 [已更新最新开发文章,点击查看详细] 01 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...
随机推荐
- 11gR2 RAC重新启动后仅仅能起单节点
11gR2 RAC重新启动后仅仅能起单节点 问题背景: 将11gR2 RAC正常部署完毕之后运行两节点重新启动操作发现当中有一个节点的集群资源无法启动,遂再次重新启动该无法启动集群资源的节点,还是不可 ...
- java反射知识点总结
一.java反射基础 1.1 什么叫java反射? 答:程序运行期间,动态的获取类的基本信息.比如:创建对象,调用类的方法,获得类的基本结构.这样给程序设计提供了很大的灵活性.个人总结就是:根据动态需 ...
- Delphi-Cross-Socket
Delphi-Cross-Socket GITHUB:https://github.com/winddriver/Delphi-Cross-Socket # Delphi 跨平台 Socket 通讯库 ...
- 【BZOJ】【1178】【APIO2009】convention会议中心
贪心 如果不考虑字典序的话,直接按右端点排序,能选就选,就可以算出ans…… 但是要算一个字典序最小的解就比较蛋疼了= = Orz了zyf的题解 就是按字典序从小到大依次枚举,在不改变答案的情况下,能 ...
- BZOJ 4145 [AMPPZ2014] The Prices 解题报告
感觉也是一个小清新题.. 我们考虑设立状态 $Dp[i][s]$ 表示考虑了前 $i$ 个商店后,购买状态为 $s$ 的最小花费. 转移的话就枚举每个商店 $i$,首先令: $$Dp[i][s] = ...
- 使用SGD(Stochastic Gradient Descent)进行大规模机器学习
原贴地址:http://fuliang.iteye.com/blog/1482002 其它参考资料:http://en.wikipedia.org/wiki/Stochastic_gradient_ ...
- 混沌数学之拉比诺维奇-法布里康特方程(Rabinovich-Fabrikant equations)
拉比诺维奇-法布里康特方程(Rabinovich-Fabrikant equations)是 1979年苏联物理学家拉比诺维奇和法布里康特提出模拟非平衡介 质自激波动的非线性常微分方程组: dot{x ...
- Partition List leetcode java
题目: Given a linked list and a value x, partition it such that all nodes less than x come before node ...
- [Web前端]由cookies安全说开去
在Web应用中,Cookie很容易成为安全问题的一部分.从以往的经验来看,对Cookie在开发过程中的使用,很多开发团队并没有形成共识或者一定的 规范,这也使得很多应用中的Cookie成为潜在的易受攻 ...
- Android -- Camera聚焦流程
Camera.java autoFocus()聚焦回调函数 @Override public void autoFocus() { //记录当前聚焦开始时间 mFocusStartTime = Sys ...