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

发布于 2024-11-04 08:37:02 字数 549 浏览 0 评论 0原文

请考虑:

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。

谢谢。

Please consider:

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;  
}  

Is it possible to track ptr, in such a way that at some point I can find out the backtrace of the variable, something like:

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

Roughly: Can we get the pointer history in gdb through some way.

Actually, this can help in fixing Memory Leaks/UMR's reported through Purify.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

反目相谮 2024-11-11 08:37:03

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

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

Your question is very unclear, as in your example ptr3 == ptr2 == ptr == &numb, so what exactly do you mean by 'pointer history'?

It appears that you are asking to track the changes to the value that ptr points to (i.e. changes to numb). You can do that with GDB watchpoints.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文