Visual Studio中11个强大的调试技巧和方法

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

这篇文章总结了可能节省你大量时间的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变量。

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

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

(0)

相关推荐

  • 怎样在Visual Studio中判断一个整数的奇偶性

    在Visual Studio中新建一个应用程序,如果在程序中输入一个整数,如何用代码判断该数是奇数还是偶数呢?笔者与大家分享一下操作. 操作方法 01 打开Visual Studio,单击文件菜单中的 ...

  • 如何在Visual Studio中创建Grid++报表

    我们在Visual Studio中可以用它自带的报表功能制作报表,但是它自带的报表功能并不完善,所以很多人都会在Visual Studio中使用Grid++制作报表.那么如何制作呢?下面小编给大家分享 ...

  • 如何用Visual Studio操作MySQL?在Visual Studio中连接MySQL数据库的方法

    MySQL是什么?如何用Visual Studio操作MySQL?MySQL是最流行的关系型数据库管理系统,在Web应用方面是最好的RDBMS应用软件之一,作为开放源码软件,可大大降低总体拥有成本.V ...

  • 如何在Visual Studio中手动配置easyx图形库

    easyx是一款优秀的图形库,在官网上可以下载到最新的easyx2014冬至版,本文也将以此为例.在VC中,可以选择直接安装,但在Visual Studio中,则需要手动配置,本文将以最新版本的Vis ...

  • 如何在visual studio中添加你需要的表格

    在asp.net动态网页的开发中,我们需要用到visual studio这个软件进行动态网页的制作和发布,但这款软件在插入你需要的表格时一直不怎么好,用代码来编辑也许好但浪费时间,有什么一举两得的方法 ...

  • Visual Studio中如何利用OpenGL绘图

    OpenGL是C++的绘图工具库,那么我们如何在Visual Studio中运用OpenGL绘图呢?下面小编给大家演示分享一下. 操作方法 01 首先打开Visual Studio,点击顶部的文件菜单 ...

  • 如何在Visual Studio中创建Winform窗体应用

    Winform窗体应用是大家经常遇到的软件类型,那么我们如何在Visual Studio中创建Winform窗体应用呢?下面小编给大家分享一下. 操作方法 01 打开Visual Studio软件,点 ...

  • 如何在Visual Studio中发布编写好的Winform程序

    我们用Visual Studio编写好Winform程序以后就需要将其发布出去了,那么如何在Visual Studio中发布编写好的Winform程序呢?下面小编给大家演示一下. 操作方法 01 首先 ...

  • Visual Studio中如何设置文本字体

    我们使用Visual Studio的时候,经常需要对不同的文本进行字体样式的配置,下面小编就给大家分享一下如何在Visual Studio中配置文本的字体. 操作方法 01 首先打开Visual St ...