在用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调试就可以了