スタック トレースに関する私の理解は基本的に、ベース ポインターとスタック ポインターとは正確には何ですか? に基づいています。彼らは何を指していますか?.
私が何年も開発を手伝ってきたプログラムがクラッシュすると、スタック ダンプが吐き出されます。私は、C++ コンパイラが生成する .map ファイルに対応して、これらのスタック トレースを評価することに慣れてきました。何度も、スタックをたどって問題をデバッグすることができました。
ただし、スタック トレースに NULL EBP (フレーム) ポインターがある場合があります。このようなサンプル スタック ダンプからの関連するスニペットを次に示します。
Initial EBP pointer value: 04d8fab0
{at address 04d8fab0: 00000000}
ご覧のとおり、EBP フレーム ポインターの値は NULL です。したがって、スタックを歩くことはできません。
これはスタックが破損している兆候ですか、それとも別の理由が考えられますか?