【发布时间】:2013-07-25 04:05:32
【问题描述】:
一个带有损坏堆栈的 coredump 文件,没有任何有用的信息。我怎样才能找到调用堆栈? 堆栈显示:
#0 0x04229c7a in ?? ()
#1 0x00921fa7 in ?? ()
#2 0xbfc17e04 in ?? ()
回溯停止:此帧内部的前一帧(损坏的堆栈?)
并且eip的地址显示“无法访问内存”! 想!
【问题讨论】:
-
您有任何其他类型的日志文件可以帮助您吗?它可能有助于为您提供有关问题大致位置的线索。或者一路走下去,使用函数跟踪,这样你就可以exaclty看到发生了什么。
-
无法从日志中找到任何有用的信息!
-
如果您的代码不包含任何动态库,您可以尝试通过映射文件将此地址映射到函数。
-
如果可以重现,请使用调试器,不要尝试使用核心文件。如果不是,那么首先要意识到的是,几乎每个函数都会在入口处创建一个堆栈帧。这会创建一个指针链,这些指针不断地指向堆栈的更高位置。使用调试器并尝试了解您的堆栈帧通常看起来像什么。弄清楚如何识别堆栈帧元素和堆栈上的返回指令指针,然后返回您的核心文件并找到堆栈帧。堆栈的较高部分很可能仍然可以。