请考虑:
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。
感谢。
答案 0 :(得分:0)
您的问题很明显,如您的示例ptr3 == ptr2 == ptr == &numb
,那么“指针历史记录”到底是什么意思?
您似乎要求跟踪ptr
指向的值的更改(即更改为numb
)。您可以使用GDB watchpoints执行此操作。