我正在运行gdb并想要检查其中一个不幸的上帝对象.它需要很多页面(而且我有一个24英寸的显示器转向侧面!)看到整个事情.为了便于使用,我希望gdb将对象打印到文件而不是屏幕,以便我可以打开它vi并轻松移动.有了所有gdb的多功能性,必须有办法做到这一点,对吧?
假设有这样的事情:
#include <map>
int main(){
std::map<int,int> m;
m[1] = 2;
m[2] = 4;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望能够从gdb检查运行该程序的地图的内容.
如果我尝试使用下标运算符,我得到:
(gdb) p m[1]
Attempt to take address of value not located in memory.
Run Code Online (Sandbox Code Playgroud)
使用find方法不会产生更好的结果:
(gdb) p m.find(1)
Cannot evaluate function -- may be inlined
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
我希望能够使用GDB从STL容器中获取地址并打印一对.
IE:鉴于以下玩具计划:
#include <map>
int main()
{
std::map<int,int> amap;
amap.insert(std::make_pair(1,2));
}
Run Code Online (Sandbox Code Playgroud)
当我尝试检查地图的单个元素时(例如p amap.begin()),我得到:
"无法评估功能 - 可能是内联的"
删除优化并启用完整调试模式,即(-O0和-g3)不起作用.
为什么会发生这种情况,我该如何解决?