11个高效的VS调试技巧
介绍
调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。
本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间。
1.悬停鼠标查看表达式
调试有时候很有挑战性,当你步入一个函数想看看哪块出错的时候,查看调用栈来想想值是从哪来的。另一些情况下,则需要添加一些监视表达式,或者查看局部变量列表,这通常还是花费一些时间的,但是。如果你把你鼠标指向你感兴趣的一个变量。你会发现事情简单多了。而且,类和结构体可以通过单击展开。这样。你就可以方便快捷的找到你想查看的变量了。
2实时改变值
调试器不仅仅是一个分析程序崩溃或是异常结果的工具了,许多bug都可以通过步入新写的函数,检查函数是否如期望的那样运行来预防。有时候你可能会好奇“如果条件为真函数会正确运行吗”大多数情况下,根本不需要改变代码重启挑起,仅仅把鼠标悬停到一个变量上,双击值然后输入一个新值就可以了。。
3.设置下一条语句
一个典型的调试情况就是通过单步跟踪分析为什么一个函数调用失败了。当你发现一个函数调用的另一个函数返回错误的时候你会怎么做?重启调试?有更好的方法。拖动这个黄色的语句标识到你想下一步执行的语句前就可以了。比如你刚才失败的那块,然后步入。简单,不是吗?
4.编辑然后继续
调试一个复杂的程序,或是一个插件的时候,在一个被调用很多次的函数处发现一个错误。但是不想浪费时间停下来,重新编译然后重新调试。没问题,仅仅在该处改正代码然后继续单步就可以。VS会修正程序然后继续调试不需要重启
注意,编辑然后继续有大量的已知限制,首先,64位代码是不行的。如果他如果为你的C#程序工作。就去工程设置的生成选项,然后目标平台为x86.不要担心。发布版的目标平台和调试的时候是分开的。可以被设置为任何平台。。
第二.编辑然后继续改变在一个方法里应该是局部的。。如果你改变了方法签名,添加一些新方法或是类。你就不得不重启程序了。或者撤销改变来继续。改变方法也包含lambda表达式隐式修改的自动生成的代理类,因此也不能继续。
5.方便的监视窗口
大概现代的调试器都有一个监视窗口,无论如何。VS允许你简单的添加或移除变量。单击空行,输入你的表达式按下回车,或者是在不需要的表达式上按下Delete键就可以删除了。
而且。从监视窗口你不仅仅可以看到“正常”的变量。你可以输入$handles 来追踪你的程序打开了多少句柄(可以方便的修复内存泄漏),输入$err 可以看到上一个函数的错误码,然后使用工具-错误信息可以看到更详细的描述,或者输入@eax(64位是@rax)来查看包含函数返回值的寄存器。
6.带注释的反汇编
使用交互式的反汇编模式可以使得优化程序的关键部分变得很容易,VS给出对应你代码每一行的汇编指令,并且运行单步运行。同时,可以在任何位置设置断点。而且,表达式的查看和修改也像在C++代码里一样
7.带有栈的线程窗口
调试多线程的程序是痛苦的。。或者也可以是很有趣的。取决于你的调试器。VS2010真正优美的特性是线程窗口的栈视图,通过窗口的调用栈你可以方便的总览线程。
8.条件断点
如果你尝试通过断点再现一个罕见的事件,该情况引发了一些严重的错误。你可以添加条件断点。定义一个断点的条件,然后如果条件不成立,VS会忽略该断点
9.内存窗口
有些bug由不正确的结构体定义引起,忽略的对齐属性等等。查看内存中的内容可以定位然后修复bug。VS提供了一个放百年的内存窗口,可以把值以8/16/32/64位的形式展示。还有浮点值。也允许实时改变他们。就像在文本编辑器里一样。
10.转到定义
这个特性不是直接关于调试的,而是关于浏览大项目的。如果你尝试找到一些不是你自己写的代码中的错误,快速知道“这个类型是什么”或者“这个函数是干嘛的”,可以节省很多时间,VS通过一个转到定义命令方便了你。
11.命令窗口
第十一的技巧chaau已经建议过了。确实可以节省很多时间,VS支持命令窗口,可以通过,视图-其他窗口-命令窗口来启动。一旦激活,你可以输入不同的命令来自动化调试。举个例子。你可以通过如下命令 简单的模拟MFC COleDateTime 变量。
11个高效的VS调试技巧相关推荐
- [原译]11个高效的VS调试技巧
介绍 调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是.可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的.近年来,调试工具的发 ...
- Visual Studio中11个强大的调试技巧和方法
调试是软件开发周期中很重要的一部分.它具有挑战性,同时也很让人疑惑和烦恼.总的来说,对于稍大一点的程序,调试是不可避免的.最近几年,调试工具的发展让很多调试任务变的越来越简单和省时. 这篇文章总结了可 ...
- Flutter调试技巧总结——高效开发的秘密
刚开始学前端的时候看到大家都是用的console.log()作为调试的手段,也可以说,很多人只会用console.log().在学习Flutter开发app的时候,我就在思考,除了使用print()来 ...
- Android STB 高效调试技巧
文章目录 一.编译 1.1 版本全编 1.2 模块单编 1.3 芯片特有单编模块 1.3.1 Uboot 1.3.2 boot.img&dt.img 二.调试 2.1 文件替换 2.1.1 常 ...
- js_调试_01_14 个你可能不知道的 JavaScript 调试技巧
更快更高效地调试你的 JavaScript 了解你的工具在完成任务时有很重要的意义. 尽管 JavaScript 是出了名的难以调试,但是如果你掌握了一些小技巧,错误和 bug 解决起来就会快多了. ...
- Xcode的调试技巧
转自:http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Glob ...
- iOS调试技巧(转载)
IOS各种调试技巧豪华套餐(转载) 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoin ...
- iOS各种调试技巧豪华套餐
转载http://www.cnblogs.com/daiweilai/p/4421340.html#biyouji 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Globa ...
- IDEA断点调试技巧,多张动图包教包会。
文章目录 一. 怎么开启断点调试? 二. 调试界面咋那么多按钮? 1.返回断点位置 2.步过 3.步入 4,5.强制步入,步出 6.回退断点 7.断点跳到光标处 8.表达式计算 9.恢复程序 10.停 ...
最新文章
- 使用idea对生产环境的JAVA应用进行远程调试
- shell错误 sed: can't read : No such file or directory
- Lua和C语言的交互——C API
- fastText原理和文本分类实战
- pid算法通俗解释,平衡车,倒立摆,适合不理解PID算法的人来看!
- php 让字体闪烁,js实现文字闪烁特效的方法
- Kruskal HDOJ 4313 Matrix
- IP地址的三种表示格式 及 在Socket编程中的应用
- 用python os.system 执行 批处理的时候, 出现的一些问题
- 不知道输入何时停止_知道何时停止
- hihocoder1477 闰秒
- go sqlite mysql_Go实战--go语言操作sqlite数据库(The way to go)
- H3C进入目录---用户视图
- 人生苦短之我用Python篇(socket编程)
- ppt矩形里面的图片怎么放大缩小_PPT中的背景图片,如何裁剪其大小?
- Android陀螺仪加速度传感器
- MYSQL之索引详谈(三种介绍方式)
- pycharm中Crtl+Shift+F10快捷键问题
- HAL库配置STM32F1系列PWM驱动步进电机(一)
- 模电——磁珠的前世今生
热门文章
- 如何优雅的理解ECMAScript中的对象
- 前后端分离的项目,如何解决登录问题
- linux 基础学习之目录与文件处理命令
- “strcpy” 模拟的实现
- 3.2. 添加模板版本(Core Data 应用程序实践指南)
- Linux系统管理命令之管理文件和目录
- BlackBerry 应用程序开发者指南 第二卷:高级--第11章 管理通知(Notification)
- CentOS 7 odoo12 部署
- Typora+PicGo+github搭建免费稳定图床写博客如行云流水(mac+window)
- jquery ajax 跨域解决方案 - CORS