zoukankan      html  css  js  c++  java
  • 【调试】Visual Studio 调试小技巧(2)-从查看窗口得到更多信息(转载)

    在使用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. 数组

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

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

  • 相关阅读:
    mtk lk阶段的lcm流程
    MTK touchscreen 流程
    MTK DDR调试
    增加,删除GMS包
    最大最小背光亮度修改
    HDMI 8193 配置
    mtk6737t摄像头配置文件的编译
    camera调试命令
    Linux 终端显示 Git 当前所在分支
    ubuntu系统,关于源(source)的配置
  • 原文地址:https://www.cnblogs.com/helloWaston/p/4598512.html
Copyright © 2011-2022 走看看