我对堆栈跟踪的理解本质上是基于基指针和堆栈指针到底是什么?他们指向什么?.
我多年来一直帮助开发的一个程序在崩溃时会吐出一个堆栈转储,我已经习惯于评估这些堆栈跟踪,与 C++ 编译器生成的 .map 文件相对应。很多次,我已经成功地遍历堆栈和调试问题。
但是,有时堆栈跟踪有一个 NULL EBP(帧)指针。以下是来自此类示例堆栈转储的相关片段:
Initial EBP pointer value: 04d8fab0
{at address 04d8fab0: 00000000}
如您所见,EBP 帧指针的值为 NULL。因此,我不能走堆栈。
这是堆栈损坏的迹象,还是有其他可能的解释?