c – 在XCode 3.xx GDB中打印Qt数据结构(QList,QString等)

c – 在XCode 3.xx GDB中打印Qt数据结构(QList,QString等),第1张

概述我试图在XCode中调试一些Qt容器,我从GDB返回的结果没用: print l1$1 = (QSharedPointer<QList<SNAPSHOT> > &) @0x102780650: { <QtSharedPointer::ExternalRefCount<QList<SNAPSHOT> >> = { <QtSharedPointer::Basic<QList<SNAPSH 我试图在XCode中调试一些Qt容器,我从GDB返回的结果没用:

print l1 = (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 = {  d = 0x1161e2890

如何从l1(QList)和strquery(QString)获得一些有用的输出?
我已经尝试过使用这个.gdbinit,它添加了一些像“printq4string”这样的宏,但是这些使用非常痛苦,因为在打印结构时我需要在每个成员变量上手动运行它.

解决方法 好吧,这让我疯了但我明白了.

首先确保您的项目设置为使用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.

总结

以上是内存溢出为你收集整理的c – 在XCode 3.xx GDB中打印Qt数据结构(QList,QString等)全部内容,希望文章能够帮你解决c – 在XCode 3.xx GDB中打印Qt数据结构(QList,QString等)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045661.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存