请考虑:
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/