如何使用 GDB 在内存空间中查找引用某个地址的所有指针?
Posted
技术标签:
【中文标题】如何使用 GDB 在内存空间中查找引用某个地址的所有指针?【英文标题】:How to find all pointers referencing a certain address in the memory space using GDB? 【发布时间】:2018-04-20 02:48:14 【问题描述】:我想在我的程序中找到所有引用某个地址的指针。如何使用 GDB 做到这一点?谢谢。我的程序是 C++
【问题讨论】:
也许有人会给你一些魔法,但在那之前我会说你不能。最大的问题是你为什么需要?您要解决的问题是什么? 扫描所有进程内存以获取该值?它会有误报。 您可以在该地址上放置一个观察点,并找到所有实际取消引用这些指针的位置。 @Yakk-AdamNevraumont 这对源代码级调试没有多大帮助。 【参考方案1】:这是一个“困难的话题”。单独使用 gdb 可能很难做到这一点,但 valgrind 可能会有所帮助(请参阅 http://www.valgrind.org/docs/manual/manual-core-adv.html#manual-core-adv.valgrind-monitor-commands 了解 valgrind 在作为 gdbserver 运行时可以做什么)。事实上,valgrind 有一种跟踪指针以检测内存泄漏的技术......但是,如果你的程序对指针做了一些棘手的事情(比如屏蔽它们然后重新创建它们、打包它们、保持它们不对齐等),那么将没有标准工具能够帮助你。
【讨论】:
以上是关于如何使用 GDB 在内存空间中查找引用某个地址的所有指针?的主要内容,如果未能解决你的问题,请参考以下文章