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 固定数据提示 如果你在调试时,经常将鼠标悬停在数据提示上,就可能想固定变量的数据提示,方便自己随时查看. 即使在重新启动后,固定的变量也能 ...
随机推荐
- 用户空间程序的函数跟踪器 (Function Tracer)
http://blog.csdn.net/robertsong2004/article/details/38499995
- erlang debug
http://www.cnblogs.com/goldli/archive/2011/03/08/1976998.html erlang 模块文件 helloworld.erl 文件内容: -modu ...
- 如何在windows server 2008上配置NLB群集
参考:http://zlwdouhao.blog.51cto.com/731028/781828 前些天写了一篇关于NLB群集模式多播和单播的简单介绍.那么下面我们一起来探讨一下,如何在windows ...
- [Git] git merge之squash
reference : https://www.cnblogs.com/ungshow/p/3515161.html 看CM源码时,发现历史记录里有很多squash,于是google了解了一下. Gi ...
- C# 事件(Event)
事件(Event) 基本上说是一个用户操作,如按键.点击.鼠标移动等等,或者是一些出现,如系统生成的通知.应用程序需要在事件发生时响应事件.例如,中断.事件是用于进程间通信. 通过事件使用委托 事件在 ...
- $.jsonp()的简单使用
// jsonp 获取 json 数据: $.jsonp({ url: GLOBAL.baseUrl + '/company/mobi_getposter.action', callback: 'ca ...
- 检测 USB 设备拨插的 C# 类库:USBClassLibrary
这是采用C#开发的一个USB库,使您可以管理USB设备的连接和分离事件,探测自己的设备.可以运行在Windows XP和Windows7 64位系统下. 01 private void USBPort ...
- 黑马day12 DbUtils的介绍
简单介绍: DbUtils为不喜欢hibernate框架的钟爱.它是线程安全的,不存在并发问题. 使用步骤: 1. QueryRunner runner=new QueryRunner(这里写数据源. ...
- ObservableCollection
1)可以使绑定控件与基础数据源保持同步2)还可以在您添加.删除.移动.刷新或替换集合中的项目时引发 CollectionChanged 事件3)还可以在您的窗口以外的代码修改基础数据时做出反应4)相互 ...
- 关于ARM的B,BL跳转指令
.text:00001260 A3 04 00 EB BL sub_24F4 当前地址+ (偏移 << 2 + 8) = ...