gpt4 book ai didi

c++ - gdb 用户定义函数 : how to pass complex argument?

转载 作者:行者123 更新时间:2023-11-28 01:42:27 24 4
gpt4 key购买 nike

我想检查几个 QString 变量,所以我在互联网上找到了这个的宏:

define printqstring
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

但是当我尝试使用它时,出现了这样的错误:

(gdb) printqstring ((MyWidget *)0xd98cb0)->caption_
A syntax error in expression, near `,((MyWidget.d->size'.

如果我尝试手动使用来自宏的命令,它们工作正常:

(gdb) printf "(QString)0x%x (length=%i): \"",&((MyWidget *)0xd98cb0)->caption_,((MyWidget *)0xd98cb0)->caption_.d->size
(QString)0xd98ccc (length=3)

那么如何将如此复杂的参数传递给 gdb 宏呢?

最佳答案

不幸的是,gdb 总是在任何空格字符处划分用户定义函数的输入,即使该字符在括号或类似的东西内也是如此。

因此,您只需确保在要传递的参数中不使用任何空格即可:

(gdb) printqstring ((MyWidget*)0xd98cb0)->caption_
^~~ removed space

我不知道有什么好方法可以使它更方便并留出空间。

关于c++ - gdb 用户定义函数 : how to pass complex argument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46622060/

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