GDB 用户定义函数:如何传递复杂参数
gdb user-defined functions: how to pass complex argument?
我想检查几个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
我不知道有什么好方法可以让这更方便并允许空间。
相关文章:
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 将对象数组的引用传递给函数
- Pybind11:将元组列表从Python传递到C++
- std::向量与传递值的动态数组
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 函数复杂度分析
- 使用指向成员的指针将成员函数作为参数传递
- Ctypes wstring通过引用传递
- C++数组传递给大小为的函数
- 将复杂的numpy阵列传递到Cython中的C
- 将复杂的结构(带有结构的内部数组)从 C# 传递到C++
- GDB 用户定义函数:如何传递复杂参数
- 将复杂对象从 C# 传递到C++
- 通过参考传递复杂的真实和图像
- JNI——可以将复杂类型作为本机方法参数传递
- 嵌套循环的时间复杂度:cn(n+1)/2从何而来
- *val 和 &val 在 C++ 中通过引用传递时有何不同
- 如何将复杂的结构数组传递给函数
- 传递复杂类型时的const正确性
- 如何将复杂列表从c++传递到python