伯乐在线注:我们在@程序员的那些事 微博上推荐了英文原文,感谢@halftone_被禁用了的热心翻译。

简介

调试是软件开发周期中很重要的一部分。它具有挑战性,同时也很让人疑惑和烦恼。总的来说,对于稍大一点的程序,调试是不可避免的。最近几年,调试工具的发展让很多调试任务变的越来越简单和省时。

这篇文章总结了可能节省你大量时间的11个Visual studio的调试技巧和方法。

1 悬停鼠标查看表达式值

调试是很有挑战性的。比如在函数内逐步运行可以看出哪里出错,查看堆栈信息可以知道函数被谁调用等等……但是无论哪种情况下,查看表达式和局部变量的值都是很麻烦的(把表达式和局部变量放到watch窗口里)。一种更简单的方法,把鼠标停在所需查看的数据上。如果是类或结构,那么点击展开可以很方便快速地查看其字段。

2 在运行过程中改变变量值

调试器不仅仅是分析程序崩溃和诡异行为的工具,还可以通过逐步调试检查数据和行为是否符合程序预期的方法解决许多bug。有时,你会想是否设置某些条件为真,程序就能正确运行了。其实你只要把鼠标移动到变量上,双击值,然后输入你需要的值。这样就不需要修改代码,重启程序了。

3 设置下一个运行位置

一个典型的调试案例是我们经常会用逐步调试的方法去分析为什么函数出错了。这时你遇到这个函数调用其他函数返回错误,而这个错误不是你想要的,你该怎么办?重启调试器?这里有个更好的方法,直接把黄色的运行位置箭头拖到你想要的运行位置。其实就是跳过中间运行代码,直接到想要的位置。很简单吧。

4 编辑然后继续运行

在运行一个很复杂的程序和插件时,发现一个错误,但是不想浪费时间去重编译重启动程序。很简单,只要在这个位置修改这个bug,然后继续调试。Visual studio会修改这个程序,使得你可以继续调试而不需要重启程序。

值得注意的是“编辑然后继续运行”这个功能有几个限制。一,它不能在64位代码上使用。如果想使用这个功能,到项目设置里的编译选项,选择”x86”作为目标平台。不要担心,这目标平台在reslease配置是和”debug是分离的,也就是说依然是”Any CPU”的设置。二,“编辑然后继续运行”这个功能仅适用于一个函数内部改变。如果你想要改变这个函数的声明或者增加新的方法,你只能选择重启程序,或者不做任何改变继续。如果修改的方法中包含lambda表达式,则意味着修改了编译器自动生成的委托类型,这样会导致编译器停止运行。

5 一个方便的查看窗口

大部分现代的调试器都有查看窗口。但是,visual studio的查看窗口使用特别简单,你能很方便的增加和删除变量。只要在窗口里点击空白行,输入表达式然后按enter键。或者点击表达式,按delete键删除不需要的表达式。

在调试窗口不仅仅可以查看普通的变量值,甚至可以输入$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变量。

Shell

1

? dt.Format("%Y-%m-%d %H:%M:%S")

英文原文:Ivan Shcherbakov,编译:@halftone_被禁用了

译文链接:http://blog.jobbole.com/33865/

from:http://blog.jobbole.com/33865/

11个强大的Visual Studio调试小技巧相关推荐

  1. 12个Visual Studio调试效率技巧

    在这篇文章中,我们假定读者了解VS基本的调试知识,如: F5 开始使用调试器运行程序 F9 在当前行设置断点 F10 运行到下一个断点处 F5 从被调试的已停止程序恢复执行 F11 步进到函数内(如果 ...

  2. Visual Studio常用小技巧[备忘]

    1. 怎样调整代码排版的格式? 选择:编辑->高级->设置文档的格式  或     编辑->高级->设置选中代码的格式. 格式化cs代码:Ctrl+k+f  格式化aspx代码 ...

  3. [备忘]Visual Studio常用小技巧

    1. 怎样调整代码排版的格式? 选择:编辑->高级->设置文档的格式 或     编辑->高级->设置选中代码的格式. 格式化cs代码:Ctrl+k+f 格式化aspx代码:C ...

  4. Visual Studio调试技巧

    [本文出自程序人生 >> Visual Studio调试小技巧]记得<Windows核心编程>一书的开头部分讲到了Visual Studio中一个查看错误消息的小技巧,前几天调 ...

  5. DIY 一套正版、免费、强大的 Visual Studio 2012 IDE

    作为开发软件的程序员,应在力所能及的情况下使用正版软件.最近一直在用VisualStudio 2012 Express Desktop/Web 版本开发项目.VisualStudio 2012 Exp ...

  6. Visual Studio调试/加载速度很慢

    本文翻译自:Visual Studio debugging/loading very slow I'm at wits end. 我的智慧结束了. Visual Studio is typically ...

  7. Visual Studio调试之断点基础篇

    原文链接地址:http://www.cnblogs.com/killmyday/archive/2009/09/26/1574311.html 我曾经问过很多人,你一般是怎么调试你的程序的? F9, ...

  8. visual studio 调试 定义debug常量_有趣的阅读 12个提高生产力的Visual Studio调试技巧...

    以前因为工作的关系,接触过不少程序员同行,发现很多同学对所谓的小技巧tips感兴趣.本文就是一篇很有趣的文章,总结介绍了12个关于"宇宙第一IDE"-- Visual Studio ...

  9. Visual Studio调试之避免单步跟踪调试模式

    写完Visual Studio调试之断点进阶篇之后,想分享一下我常用的一些调试技巧,后面发现写之前,一些背景知识需要介绍一下. 下面是几篇今年2月份在CSDN写的几篇文章,比如关于如何使用第一次异常处 ...

最新文章

  1. Ext学习-前后交互模式介绍
  2. IBatis手动刷新缓存
  3. Linux入门基础思维导图
  4. 设置eclipse默认用户名
  5. 初赛问题求解及选择题数学相关整理
  6. WinForm中的各种对话框
  7. java搜索string_java – 在数组列表中搜索最常见的String
  8. 领域应用 | 智能导购?你只看到了阿里知识图谱冰山一角
  9. garch预测 python_数据科学方面的Python库,实用!
  10. php获取手机的mac地址,Android手机获取Mac地址的方法
  11. mysql输入中文出现 号_MySQL插入中文数据出现?号
  12. 更新IIS下WCF服务产生的两则问题
  13. @Scope作用域代理的应用:@RefreshScope注解实现动态刷新配置的底层原理与实现
  14. Java数组以及冒泡排序--------07
  15. 【java】Java 包(package)
  16. 使用vue ui创建vue项目(基于图形化界面的方式)
  17. 2022最新软件测试面试题
  18. 实现html下载为pdf时分页不切断table表格或者echarts图片
  19. RabbitMQ 报错:connection error; (reply-code=530, reply-text=NOT_ALLOWED - XXX(Hosts名) / not found)
  20. 2D中小游戏开发C++游戏教程

热门文章

  1. 马云:员工的离职原因--转载
  2. 数学建模学习笔记——图论最短路径
  3. 【Python】Pandas基础:结构化数据处理
  4. 利用logistic回归构建申请信用评级案例
  5. 微信小程序外卖增长402%,茶饮下单最活跃
  6. 谷歌大脑科学家亲解 LSTM:一个关于“遗忘”与“记忆”的故事 本文作者:奕欣 2017-01-14 09:46 导语:AI科技评论保证这是相对通俗易懂的一篇入门介绍了,看不懂的话欢迎关注「AI 科技
  7. 数据挖掘SPSS Clementine 12.0.3 多国语言(含中文)破解版
  8. java function获取参数_「Java容器」ArrayList源码,大厂面试必问
  9. hadoop入门-在windows上编译x64位hadoop
  10. Algorithms_算法专项_Hash算法的原理哈希冲突的解决办法