gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:45:20 25 4
gpt4 key购买 nike

我正在尝试在 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) 中获取一些有用的输出?
我已经尝试过使用这个 .gdbinit,它添加了一些像“printq4string”这样的宏,但是使用这些宏非常痛苦,因为在打印出结构时我需要在每个成员变量上手动运行它。

最佳答案

好吧,这让我抓狂,但我明白了。

首先确保您的项目设置为使用 GCC 4.2 编译,而不是纯 LLVM,如下所示: enter image description here

LLVM 现在被设置为 XCode 4 中的默认编译器,它不会为类内部的结构添加正确的调试信息。

现在在你的 ~/.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 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com