VS2005中Nebula3数据类型的调试信息显示

用过VS2003的应该知道, STL的容器调试起来非常麻烦, 因为调试时显示的信息非常不直观

VS2005引入一个autoexp.dat, 可以定义数据在调试时显示的格式

详细介绍可以参考:Writing custom visualizers for Visual Studio 2005

这里暂时给出一些Nebula3相关的格式定义:

这些放到[AutoExpand]字段下面:

;------------------------------------------------------------------------------  
;  Nebula Device 3 Types  
;------------------------------------------------------------------------------  
Math::float4=<X,g>, <Y,g>, <Z,g>, <W,g>  
Math::quaternion=<X,g>, <Y,g>, <Z,g>, <W,g> 

这些放到[Visualizer]字段下面:

;------------------------------------------------------------------------------  
;  Nebula Device 3 Types  
;------------------------------------------------------------------------------  
Core::Rtti{  
    preview( $e.name )  
}  
Util::Array<*>|Util::FixedArray<*>{  
    children  
    (  
        #array 
        (  
            expr : $c.elements[$i],    
            size : $c.size  
        )  
    )  
    preview  
    (   
        #(  
 "[",   
            $c.size ,  
 "](",   
            #array 
            (  
                expr : $c.elements[$i],    
                size : $c.size  
            ),   
 ")" 
        )  
    )  
}  
Util::KeyValuePair<*>{  
    preview  
    (  
        #(  
 "(", $e.keyData, ",", $e.valueData, ")" 
        )  
    )  
}  
Util::String{  
    preview  
    (  
        #if($e.heapBuffer != 0) 
        (  
            [$e.heapBuffer,s]  
        )  
        #else 
        (  
            [$e.localBuffer,s]  
        )  
    )  
}  
Util::Proxy<*>{  
    preview( $e.ptr.ptr )  
}  
Util::Atom<*>{  
    preview( $e.proxy )  
} 

Array相关的那个还不能用, 我也不清楚是为什么

#array的size: 后写什么都不管用, 直接写个数字却能起效果. 不知道哪位仁兄指点一下? 感激不尽

=================================================================

08/05/2009 : 修正Array/FixedArray调试信息无法显示的问题

原因让人很崩溃: Array::size的"size"成员是autoexp的一个关键字, 所以产生了解析错误

把Array::size和FixedArray::size改名叫arraySize解决问题. 脚本更正如下:

Util::Array<*>|Util::FixedArray<*>{  
    children  
    (  
        #array 
        (  
            expr : $c.elements[$i],    
            size : $c.arraySize  
        )  
    )  
    preview  
    (   
        #(  
 "[",   
            $c.arraySize ,  
 "](",   
            #array 
            (  
                expr : $c.elements[$i],    
                size : $c.arraySize  
            ),   
 ")" 
        )  
    )  
}  

现在的效果是不是跟std::vector一样了呢?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏hotqin888的专栏

tealeg/xlsx遇到读取空表格错误

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

1692
来自专栏zhisheng

JAVA虚拟机关闭钩子(Shutdown Hook)

当你认真的去看一个组件的源码的时候,你会经常看见这种关闭钩子的函数,如果你不了解的话,谷歌一下,你就会发现如下文章就是搜索引擎出来的第一篇,不愧是出自我们优秀的...

2713
来自专栏SDNLAB

Open vSwitch系列之openflow版本兼容

众所周知Open vSwitch支持的openflow版本从1.0到1.5版本(当前Open vSwitch版本是2.3.2)通过阅读代码,处理openflow...

56513
来自专栏Jerry的SAP技术分享

ERP和C4C中的function location

SAP ERP里的Functional Locations,下载到SAP Cloud for Customer后成为类型为‘Functional Locatio...

1002
来自专栏LEo的网络日志

go技巧分享(二)

3998
来自专栏潇涧技术专栏

Builtin Lint Detectors (1)

本文主要介绍的是Lint工具中自带的与Android开发相关的lint检查项,通过查看lint检查项的描述及其代码实现,我发现这里面存在不少应用开发编码的Bes...

741
来自专栏一个会写诗的程序员的博客

ES6 + React 开发极小知识集教程(附:dva 创建项目过程讲解)Kotlin 开发者社区

不要用 var,而是用 const 和 let,分别表示常量和变量。不同于 var 的函数作用域,const 和 let 都是块级作用域。

1162
来自专栏编码小白

tomcat源码解读一 Digester的解析方式

1    Digester Digester在tomcat中的作用是对conf下的server.xml文件进行实例化,其是从Catalian这个组件开始,创建D...

5619
来自专栏Golang语言社区

Go基础系列:channel入门

channel用于goroutines之间的通信,让它们之间可以进行数据交换。像管道一样,一个goroutine_A向channel_A中放数据,另一个goro...

1344
来自专栏JavaEdge

Document.cookie

1544

扫码关注云+社区

领取腾讯云代金券