转载:http://www.cppblog.com/flyinghare/archive/2010/09/27/127836.html

autoexp.dat入门(调试时自定义变量显示)

VC在调试状态下,会以三种方式显示一个变量的内容,分别是preview, childrenstringview,例如下图所示,定义一个std::string类型的变量,鼠标悬停后显示的内容就是preview,children是点击”+”符号后显示的内容,而对于含有字符串内容的变量,点击上放大镜符号,会弹出单独的窗口内显示其中的字符串内容。

  针对这部分功能,微软提供给开发者一个自定义接口,就是通过修改autoexp.dat这个看起来其貌不扬的小文件,该文件放在“$(VSINSTALLDIR)\Common7\Packages\Debugger”目录下,微软并没有提供关于这个文件的说明文档,只是在这个文件开始的地方有一些简单的说明,好在这个文件的结构并不复杂,通过分析现成的例子,大概也能了解个八九不离十。
    先以一个例子说明如何使用这个文件,打开这个文件,在”[Visualizer]“这一行下面添加下面的内容

MyClass{
preview
(
        #(
"Hello,World!"
)
)
}

然后启动VS, 随便定义一个名字为MyClass的类,当使用VS的调试器查看这个类的内容时,你会发现显示的调试内容已经变成了”Hello,World!”

下面我们再来看一个稍微复杂的例子,比如一个自定义的数组类

struct MyClass
{
int size[32];
int* buf;
};

    调试这个数据结构的时候,我们想显示这个数组的元素个数,每个元素的值,以及每个元素的奇偶性,那么需要这样定义:

MyClass{
preview
(
  #(
"[count is ", $c.size, "] ",
"(buf ",
    #array
(
expr: $c.buf[$i],
size: $c.size
): $e,
") ",
"(odd ",
   #array
(
expr: $c.buf[$i],
size: $c.size
) : $e&1,
")"
)
)
}

    实际显示效果为:

    其中,$c表示当前所定义数据结构,#array表示用数组形式显示内容,$i表示数组中的每个元素的索引,$e表示每个元素的值,同样,可以用#tree和#list分别用来显示树形数据结构和链表类型的数据结构。
    autoexp.dat中已经对VC提供的缺省的STL数据结构做了定义,比如vector,map等,通过分析这些定义,还可以挖出很多有趣的功能,比如用#if/#else/#switch/#case等条件判断功能,在处理一些比较复杂的组合类型的数据结构时,就非常有用。

【转载】调试利器 autoexp.dat的更多相关文章

  1. Visual Studio Debugger AutoExp.dat & Visualization Framework

    bing.com搜索: autoexp.dat 参考资料: AutoExp.dat http://www.virtualdub.org/blog/pivot/entry.php?id=120 http ...

  2. linux-c/c++调试利器gdb、ddd小试

    linux-c/c++调试利器gdb.ddd小试 原文链接: http://deepfuture.iteye.com/blog/749148 博客分类: C++/C/lisp CC++C#LinuxU ...

  3. 【测试工具】http协议调试利器fiddler使用教程

    转自:http协议调试利器fiddler使用教程http://bbs.phpchina.com/thread-207418-1-1.html Fiddler真乃神器!它和市面上常见的很多web调试器. ...

  4. 前端调试利器——BrowserSync

    此处记录一下踩过的坑 之前看的这个地址:http://www.browsersync.cn/ 也就是 BrowserSync的官网上面关于代理服务器的例子不管怎么试都不行 请看下例子 browser- ...

  5. Reveal1.5破解,iOS_UI调试利器Reveal最新版本破解方法

    Reveal1.0.7破解 1.官网下载最新版Reveal,拖动应用程序中,运行一次2.下载16进制编辑器"0xED" for mac(http://dl.vmall.com/c0 ...

  6. Windows GUI代码与Windows消息问题调试利器

    Windows GUI代码与Windows消息问题调试利器 记得很久前有这么一种说法: 人类区别于动物的标准就是工具的使用.同样在软件开发这个行业里面,对于工具的使用也是高手和入门级选手的主要区别,高 ...

  7. 手机H5 web调试利器——WEINRE (WEb INspector REmote)

    手机H5 web调试利器--WEINRE (WEb INspector REmote) 调试移动端页面,优先选择使用chrome浏览器调试,如果是hybrid形式的页面,可以使用chrome提供的ch ...

  8. Javascript 调试利器 Firebug使用详解

    Javascript 调试利器 Firebug使用详解 有时候,为了更清楚方便的查看输出信息,我们可能需要将一些调试信息进行分组输出,那么可以使用console.group来对信息进行分组,在组信息输 ...

  9. dubbo服务接口开发者必备调试利器,你值得拥有

    dubbo服务接口开发者必备调试利器,你值得拥有 学习了:https://my.oschina.net/vboxtop/blog/1524290 找到了:http://www.vbox.top/?fr ...

随机推荐

  1. vmstat命令学习

    vmstat 是Linux/Unix系统用来进行系统监控的工具 监控的目标主要有目标服务器的cpu使用率.内存的使用情况.虚拟内存交换情况,IO读写情况. 可以通过vmstat --help来获得该命 ...

  2. Siteserver-stl:searchOutput(搜索结果)自定义显示样式

    stl:searchOutput 自定义显示样式 自定义搜索提交表单需要在<stl:searchOutput>中嵌入显示搜索结果的标签,必须包含的标签 有<stl:pageConte ...

  3. Cookie案例:简单登录界面中的应用

    ServletDemo1.java package ztq.servlet.study; import java.io.IOException; import java.io.PrintWriter; ...

  4. 第一章-第七题( 有人认为,“中文编程”, 是解决中国程序员编程效率一个秘密武器,请问它是一个 “银弹” 么? )--By 侯伟婷

    首先,“银弹”在百度百科中的解释是银色的子弹,我们更熟知的“银弹”一词,应该是在<人月神话>中提到的.银弹原本应该是指某种策略.技术或者技巧可以极大地提高程序员的生产力[1].此题目中关于 ...

  5. spring mvc异常统一处理(ControllerAdvice注解)

    首先我的项目是一个为移动端提供的json数据的,当后台报错时如果为移动端返回一个错误页面显得非常不友好,于是通过ControllerAdvice注解返回json数据. 首先创建一个异常处理类: pac ...

  6. php 文件日志类

    php文件日志类,按年月日组织目录结构. <?php class FileLog { private $_filepath; //文件路径 private $_filename; //日志文件名 ...

  7. mysql 查询成本

    SELECT SQL_NO_CACHE spu from dp_distributor_products_1_online where dpId > 15 AND dpId <= 60; ...

  8. java中Collections.sort排序详解

    Comparator是个接口,可重写compare()及equals()这两个方法,用于比价功能:如果是null的话,就是使用元素的默认顺序,如a,b,c,d,e,f,g,就是a,b,c,d,e,f, ...

  9. 月四 周2 ii

    今日通过色鸟鸟 以此纪念 不是很想玩红鸟鸟 简单来说因为红鸟鸟结束后,五彩斑斓系列就和我没关系了= = 珍惜为每一部作品感伤的每一刻吧

  10. jQuery 实时监听<input>输入值的变化

    这方法比 on('keydown') 更实时 <input type='text' id='input1'/>$(document).ready(function(){ $('#input ...