在 gdb 中查找指向地址的所有变量

Find all variables pointing to an address in gdb

本文关键字:变量 地址 gdb 查找      更新时间:2023-10-16

对于上下文,我的特殊情况如下:我遇到了段错误,正在分析核心; 堆栈跟踪显示名为 exit 的程序,但在完成之前崩溃,在某些向量的 d'tor 中;我可以得到向量的地址,但我不熟悉代码,我不知道它对应于什么变量;我想找出哪些变量指向此向量以检查相关代码。有什么建议吗?

我可以得到矢量的地址...我想知道什么 变量指向此向量

有了某个变量的地址,您可以使用info symbol命令来打印变量的名称,如下所示:

(gdb) info symbol 0x4005BDC

请参阅 gdb 文档中的检查符号表。

您可以在崩溃之前创建一个断点,并打印 std::vector 中的所有变量。

print *(your_vector._M_impl._M_start)@your_vector.size()

例如:

有了std::vector<int> vec(3);你会写print *(vec._M_impl._M_start)@3