Gnu-debugger-gdb-debugging-example2
提供:Dev Guides
GDB-デバッグの例2
メモリが初期化されていないためにコアダンプが発生する別のプログラムを作成してみましょう。
デバッグを有効にするには、プログラムを-gオプションでコンパイルする必要があります。
注: C ソースコードを使用しているため、g コンパイラを使用しています。
Linuxプログラムでこのプログラムを実行すると、次の結果が生成されます。
次に、gdbを使用してデバッグします。
残念ながら、ユーザー定義関数 main または setint のいずれでもプログラムはクラッシュしないため、有用なトレースまたはローカル変数情報はありません。 この場合、プログラムを1ステップ実行する方が便利な場合があります。
- ipの値は、ipが指す整数の値です。 この場合、それは異常な値であり、問題があることの強力な証拠です。 この場合の問題は、ポインターが適切に初期化されなかったため、メモリ内のランダムな領域(アドレス0x40014e0)を指していることです。 運がよければ、* ipに値を割り当てるプロセスはプログラムをクラッシュさせませんが、終了時にプログラムをクラッシュさせる問題が発生します。