gdb将内存地址解释为对象

时间:2011-03-21 18:17:59

标签: c++ linux gdb

我正在根据可用的核心转储调查崩溃。应用程序崩溃是一个C ++程序,使用gcc构建并在RH5上运行。回溯似乎有效,直到#1帧。试图打印我得到的对象     <invalid address>, <error reading variable> 由于我从#2帧获得了对象的地址,因此我可以以某种方式“转储”分配对象的内存并仍然收集一些信息。此外,我可以强制gdb打印地址,就好像它是一个对象,而不是试图猜测对象是如何对齐的,即使它检测到一些错误。我的想法是,对象可能已被删除,但也许内存仍然存在,我可以打印一些成员变量。

请评论是否可能,如果是,请以gdb方式完成。 10倍。

1 个答案:

答案 0 :(得分:19)

好吧,如果你有地址,你可以随时这样做:

print *(class MyClass*)pointer_var