在 gdb 中查找指向地址的所有变量
Find all variables pointing to an address in gdb
对于上下文,我的特殊情况如下:我遇到了段错误,正在分析核心; 堆栈跟踪显示名为 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
相关文章:
- 附加调试器并以编程方式获取变量地址 Visual Studio
- 变量地址的运算符[]是如何工作的
- C 给出了一个字符串列表,如何从类中获取各个变量地址
- 从函数返回变量地址时如何修复"与局部变量关联的堆栈内存地址"?
- 获取封装在命名空间中的静态变量地址
- 为什么分配的变量地址之间相差 16 个字节?
- 为什么在循环中定义的变量地址在每次迭代中都保持不变
- 是否可以使用指向语句中声明的变量地址的指针"if"
- 字符串从变量(&变量)地址的长度 - 嵌入式C
- 汇编:C++堆栈变量地址不同/错误?
- x 在变量地址中的意义是什么?
- 在哪里放置 HW BP 以捕获全局变量地址损坏
- C++变量地址不匹配
- 重载 std::ostream 运算符<<未调用,stream 获取变量地址而不是对象
- std矢量包含指针和变量地址.清理
- 注册变量地址
- 使用内联程序集获取变量地址
- 如果用调试信息编译,则通过其名称获取全局变量地址
- 如何在Visual Studio中复制变量地址
- 当堆栈内存中的变量地址分配给数据段或堆内存中的指针时,是否有任何错误?