c - 在 GDB 中使用便利变量的地址

标签 c gdb

有时我会遇到我想在调试中调用的函数,这些函数将指针作为参数并更改指向的内容。
例子:

int doFoo(int a, double* b)
我想从 gdb 调用这个函数,但没有 double*躺着。是否可以使用便利变量来做到这一点?简单地打电话
set $foo = 1.0
call doFoo(0, &($foo))
不起作用。

最佳答案

这似乎有效:

set var $foo = &{1.0}
call doFoo(0, $foo)
p *$foo
使用 {}使 GDB 在进程内存中分配一个单项双数组。
注意没有 &在作业中,评估 $foo每次都会返回一个新地址。

关于c - 在 GDB 中使用便利变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64365977/

相关文章:

c - 用 gdb 调试 c 程序以显示十六进制地址

c++ - CentOS 上的 GDB 忽略 gdbinit 文件

c - 理解c代码有困难

c - LabWindows:实现可以处理字符串元素的线程安全队列

c - 使用C的栈链表的pop()方法出错

c++ - memcpy 和单个数据字的赋值语句有什么区别?

c - 如何知道哪些函数引用了哪些全局变量或静态变量? (C)

c++ - gdb 关于符号的问题

c - 如何使用递归将两个数相乘

c++ - GDB 打印没有调试符号的 STL(例如 std::vector)