【发布时间】:2011-03-21 18:17:59
【问题描述】:
我正在根据可用的核心转储调查一次崩溃。崩溃的应用程序是一个 C++ 程序,使用 gcc 构建并在 RH5 上运行。回溯似乎在#1 帧之前有效。那里试图打印我得到的对象
<invalid address>, <error reading variable>
由于我从#2 帧中获得了对象的地址,因此我可以以某种方式“转储”分配对象的内存并仍然收集一些信息,这是一个有效的假设。此外,我可以强制 gdb 将地址作为对象打印,而不是试图猜测对象是如何对齐的,即使它检测到一些错误。我的想法是,也许该对象已经被删除,但也许内存仍然存在,我可以打印一些成员变量。
请评论这是否可能,如果是,应该如何在 gdb 术语中完成。 10 倍。
【问题讨论】:
-
不确定它是否有效,但您可以尝试
print *((Obj*)address)。它有时对我有用。