VS2010调试无法查看QMap内容

在用vs2010开发过程中,使用qmap数据结构,在调试过程中qMap一直显示error,无法查看实际内容,感觉非常难用,

一直以来以为是vs对qt的支持不够导致,比较人家用mfc吗,后来在网上一搜发现了一个新大陆:autoexp.dat,原来vs调试时显示调试变量内容是可配置的,网上也有众多配置好的关于qt的相关内容,但是试了几个好像并不那么好用,七拼八凑终于可以在vs2010中显示Qmap<QString,Qstring> 的内容了,显示如下:

具体操作实现很简单,

1.找到安装目录下:$(VSDIR)\Common7\Packages\Debugger\autoexp.dat 

2.记事本打开文件

3.将如下内容拷贝到文件中并保存
;------------------------------------------------------------------------------
; QVector, QStack
;------------------------------------------------------------------------------
QVector<*>|*::QVector<*>|QStack<*>|*::QStack<*>{
    preview
    (
        #if ($c.d->size <= 10) (
            #(
                "[", $c.d->size, "](",
                #array
                (
                    expr: (($T1*)((char*)($c.d)+ $c.d->offset))[$i],
                    size: $c.d->size
                ), ")"
            )
        ) #else (
            #(
                "[", $c.d->size, "](",
                #array
                (
                    expr: (($T1*)((char*)($c.d)+ $c.d->offset))[$i],
                    size: $c.d->size
                ), ", ...)"
            )
        )
    )
    children
    (
        #array
        (
            expr: (($T1*)((char*)($c.d)+ $c.d->offset))[$i],
            size: $c.d->size
        )
    )
}

;------------------------------------------------------------------------------
; QMap
;------------------------------------------------------------------------------
QMapNode<*,*>{
    preview
    (
        #(
            "(",
            $e.key,
            "; ",
            $e.value,
            ")"
        )
    )

    children
    (
        #(
            key: $e.key,
            value: $e.value
        )
    )
}
QMap<*>{
    children
    (
        #(
            raw data: [$c,!],
                  #tree
                      (
                            head: &($e.d->header),
                            size: $e.d->size,
                            left: left,
                            right: right,
                        ) : ((QMapNode<$T1>*)&$e)
                        
        )
    )

    preview
    (
        #(
            "[",
            $e.d->size,
            "](",
                              #tree
                              (
                                    head: &($e.d->header),
                                    size: $e.d->size,
                                    left: left,
                                    right: right,
                                ) : ((QMapNode<$T1>*)&$e),
            ")"
        )
    )
}
QString|*::QString{
    preview    ([(unsigned short*)$e.d + $e.d->offset/2,su])
    stringview ([(unsigned short*)$e.d + $e.d->offset/2,sub])
    children
    (
        #(
        d: $c.d,
        [size]: $c.d->size,
        [referenced]: $c.d->ref.atomic._q_value
        )
    )
}
QByteArray|*::QByteArray{
    preview    ([(char*)$e.d + $e.d->offset,s])
    stringview ([(char*)$e.d + $e.d->offset,sb])
    children
    (
        #(
            d: $c.d,
            [size]: $c.d->size,
            [referenced]: $c.d->ref._q_value
        )
    )
}

4.保存文件后,重启vs调试就可以了

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值