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