在使用Visual Studio开发调试程序时,我们经常需要打开查看窗口(Watch)来分析变量。有时在查看窗口显示的内容不是很直观。为了能从查看窗口的变量中得到更多的信息,我们需要一些小的技巧。下面是几个例子。

1. Windows消息

在开发调试界面程序时,我们经常需要查看消息的内容。当在查看窗口中,仅仅只显示出消息对应的整数值,我们并不能直观地知道究竟是什么消息。比如:

为了能让查看窗口显示出消息内容,我们只需要在变量名添加“, wm”的格式化后缀,就能显示消息的名字:

2. 句柄返回值

Windows有很多API返回一个HANDLE类型的值来表示操作是否成功。当操作失败时,返回一个特定的值来表示操作失败的原因。通常我们不可能记住所有的错误代码对应的失败类型。比如在下面的例子中,我们就不一定能看出0x80070005表示的错误原因:

为了能方便我们从句柄的错误代码中直观地发现出错原因,Visual Studio在查看窗口中提供了一个“, hr”后缀。在变量名后添加该后缀,查看窗口就能显示出具有可读性的信息。比如,我们在上述返回值后添加“, hr”之后,就能得到:

从这个句柄值的名字看来,很有可能是访问权限出问题了。

3. 错误代码

Windows 中有很多API在操作失败时,会设置一个错误代码,程序员可以调用函数GetLastError得到该错误代码。在调试时,如果代码中没有调用GetLastError,那么我们就不能很方便地得到给错误代码。

由于这个错误代码是设置在一个叫$ERR的寄存器里。我们可以在查看窗口中显示出该寄存器的值从而得到错误代码。例如,我们运行如下代码:

HANDLE hFile = CreateFile(_T("temp2.txt"), GENERIC_READ, 0, NULL,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

如果我们之前没有新建temp2.txt这个文件,那么我们就能得到如下的错误代码:

我们可能不能从错误代码0x0002看出出错的原因。有了前面句柄的经验,我们可以在后面添加“, hr”后缀,此时查看窗口显示为:

现在我们就知道出错的原因是系统不能找到文件。

4. 数组

数组是我们使用最为频繁的一种数据结构。但当数组是以一个指针和其长度来表示时,查看窗口并不能直观地显示出数组中每个元素的值,而只能显示出该数组的起始地址以及它的第一个元素。下面就是一个例子:

为了显示出数组中所有元素的内容,我们可以在数组名的后面添加一个“, #”(#表示数组的长度)。如果我们在上面的数组名添加该后缀名就得到:

【调试】Visual Studio 调试小技巧(2)-从查看窗口得到更多信息(转载)的更多相关文章

  1. 调试 - Visual Studio调试

    Visual Studio - 调试 异常处理机制 windows预定义了一系列的异常错误码,每种程序异常都有一个对应的错误码,windows系统将这些类似键值对关系的数据存储在异常处理表中(称为SE ...

  2. Visual Studio常用小技巧一:代码段+快捷键+插件=效率

    用了visual studio 5年多,也该给自己做下备忘录了.每次进新的组换新的电脑,安装自己熟悉的环境又得重新配置,不做些备忘老会忘记一些东西.工具用的好,效率自然翻倍. 1,代码段 在Visua ...

  3. Visual Studio实用小技巧

    有一个有关微软Office的笑话,说的是它的特性太多: 当你觉得自己发现了一个Office的新特性时,它已经存在很多年了. 本文将介绍一些在Visual Studio(免费下载)中很实用却被忽略的小技 ...

  4. visual studio 一些小技巧 整理

    本博客将会陆续的整理一些作者在实际开发中的一些小技巧,一些挺有意思的东西,将会持续更新, 如果有问题,可以加群讨论,QQ群:592132877 #warning的使用 #warning 的意思是在程序 ...

  5. 设置visual studio的小技巧

    设置 Visual Studio 方法 1.设置关闭快捷键 Ctrl + W:关闭当前文档窗口 Ctrl + Q:关闭所有文档窗口 设置方法:工具-->选项-->键盘:在显示命令包含中输入 ...

  6. Visual Studio 调试小技巧-从查看窗口得到更多信息(转)

    原文地址:http://blog.csdn.net/cadcisdhht/article/details/5651488

  7. Visual Studio 2013小技巧

    Ctrl + F10 可以直接运行到光标处,而不用F10 逐过程 F11 逐语句了 当有多个断点时,按F5可以切换到下一个断点.

  8. Visual Studio 调试(系列文章)

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

  9. Visual Studio 调试 ---- 系列文章

    调试是软件开发过程中非常重要的一个部分,它具挑战性,但是也有一定的方法和技巧. Visual Studio 调试程序有助于你观察程序的运行时行为并发现问题. 该调试器可用于所有 Visual Stud ...

随机推荐

  1. 线条之美,玩转SVG线条动画

    线条之美,玩转SVG线条动画 作者:AlloyTeam www.alloyteam.com/2017/02/the-beauty-of-the-lines-break-lines-svg-animat ...

  2. CImage 是基于GDI+的,很老的一篇文章,我很久很久以前看到过的

    在许多资料上都说CImage类是基于GDI+的,但是为什么是基于GDI+的呢? 因为使用这个类时,并没有加入#include <gdiplus.h> ,也没有在程序开始和结束时分别写GDI ...

  3. 关于mapreduce 开发环境部署和jar包拷贝问题

    1.mapreduce开发应当在linux里面的eclipse不然容易出现问题. 2.把eclipse拷贝到linux环境中,然后需要拷贝hadoop-eclipse-plugin-2.3.0.jar ...

  4. 警告: [SetPropertiesRule]{Context/Loader} Setting property 'useSystemClassLoaderAsParent' to 'false' did not find a matching property.

    警告: [SetPropertiesRule]{Context/Loader} Setting property 'useSystemClassLoaderAsParent' to 'false' d ...

  5. PyCharm软件代码配色和字体设置

    配置效果图: 1.字体设置: 2.tab键设置: 3.代码颜色配置: 注释颜色为: 类名称: 函数: 关键字: 关键字参数: 函数参数: 字符串:

  6. Python_异常处理try...except、raise

    一.try...except 有时候我们写程序的时候,会出现一些错误或异常,导致程序终止.例如,做除法时,除数为0,会引起一个ZeroDivisionError 例子: 1 2 3 4 a=10 b= ...

  7. 做网站-Http状态码详解

    https://mp.weixin.qq.com/s/ZcYG59yLsLCNY2-2k4YqwA HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码 ...

  8. LintCode刷题笔记-- PaintHouse 1&2

    标签: 动态规划 题目描述: There are a row of n houses, each house can be painted with one of the k colors. The ...

  9. Eviews9.0---软件安装

    EViews是Econometrics Views的缩写,直译为计量经济学观察,通常称为计量经济学软件包.它的本意是对社会经济关系与经济活动的数量规律,采用计量经济学方法与技术进行“观察”.计量经济学 ...

  10. java-继承进阶_抽象类_接口

    概要图 一, 继承的进阶 1.1,成员变量 重点明确原理. 特殊情况: 子父类中定义了一模一样的成员变量. 都存在于子类对象中. 如何在子类中直接访问同名的父类中的变量呢? 通过关键字 super来完 ...