c - 如何在 gdb 中跟踪从一个函数传递到另一个函数的指针

标签 c gdb

请考虑:

void bar (int* ptr3)  
{  
    printf ("\n*ptr3 =%d\n",*ptr3);  
}  

void foo (int* ptr2)  
{  
    *ptr2 +=5;  
    bar (ptr2);  
}  

int main()  
{  
    int numb = 5;  
    int *ptr = &numb;  

    foo (ptr);  

    printf("\nHello !!!\n");  

    return 0;  
}  

是否可以跟踪ptr,以便在某些时候我可以找到变量的回溯,例如:

bar() : ptr3
foo() : *ptr2 +=5; 
main(): int *ptr = &numb;

粗略地说:我们可以通过某种方式获取gdb中的指针历史记录吗?

实际上,这可以帮助修复通过 Purify 报告的内存泄漏/UMR。

谢谢。

最佳答案

您的问题非常不清楚,如您的示例中的ptr3 == ptr2 == ptr == &numb,那么“指针历史记录”到底是什么意思?

您似乎要求跟踪 ptr 指向的的更改(即 numb 的更改)。您可以使用 GDB watchpoints 来做到这一点.

关于c - 如何在 gdb 中跟踪从一个函数传递到另一个函数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5839346/

相关文章:

c - 监视文件更改的可移植方式

c - 使用 time 命令了解实时时间和 cpu 时间 - 有多准确?

javascript - 是否可以将 C 代码编译为 Javascript 代码?

c++ - 我可以在GDB中的 'memory access'处设置断点吗?

c - 拆分从套接字接收的字符数组的最佳方法

c - 我们如何使用 C 程序检查传递给磁盘驱动程序的缓冲区是否扇区对齐?

assembly - gdb 反汇编中的地址到底是什么?

c - 将字符附加到 C 字符串时,Valgrind 无效读/写

c++ - 段错误 : 11 when using dynamic 3D array parameter

linux - 从可执行文件中转储 debug_loc 部分