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

时间:2011-04-30 03:45:55

标签: 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。

感谢。

1 个答案:

答案 0 :(得分:0)

您的问题很明显,如您的示例ptr3 == ptr2 == ptr == &numb,那么“指针历史记录”到底是什么意思?

您似乎要求跟踪ptr指向的的更改(即更改为numb)。您可以使用GDB watchpoints执行此操作。