c – 在XCode 3.xx GDB中打印Qt数据结构(QList,QString等)
发布时间:2020-12-14 19:13:31 所属栏目:百科 来源:网络整理
导读:我试图在XCode中调试一些Qt容器,我从GDB返回的结果没用: print l1$1 = (QSharedPointerQListSNAPSHOT ) @0x102780650: { QtSharedPointer::ExternalRefCountQListSNAPSHOT = { QtSharedPointer::BasicQListSNAPSHOT = { value = 0x1161e47e0 },members of Q
|
我试图在XCode中调试一些Qt容器,我从GDB返回的结果没用:
print l1
$1 = (QSharedPointer<QList<SNAPSHOT> > &) @0x102780650: {
<QtSharedPointer::ExternalRefCount<QList<SNAPSHOT> >> = {
<QtSharedPointer::Basic<QList<SNAPSHOT> >> = {
value = 0x1161e47e0
},members of QtSharedPointer::ExternalRefCount<QList<SNAPSHOT> >:
d = 0x1161ace00
},<No data fields>}
Current language: auto; currently c++
(gdb) print strQuery
$2 = {
d = 0x1161e2890
如何从l1(QList)和strQuery(QString)获得一些有用的输出? 解决方法
好吧,这让我疯了但我明白了.
首先确保您的项目设置为使用GCC 4.2而不是纯LLVM进行编译,如下所示: LLVM现在被设置为XCode 4中的默认编译器,并且它不为类内部的struct添加正确的调试信息. 现在在?/ .gdbinit中添加: define pqts
printf "(QString)0x%x (length=%i): "",&$arg0,$arg0.d->size
set $i=0
while $i < $arg0.d->size
set $c=$arg0.d->data[$i++]
if $c < 32 || $c > 127
printf "u0x%04x",$c
else
printf "%c",(char)$c
end
end
printf ""n"
end
你现在可以简单地输入pqts s1,它会很好地转储你的QString. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
