2016-09-24 15 views
-3

g ++コンパイラを使用してコードをコンパイルしていますが、メインメソッドが返ってからセグメンテーションフォールトに到達しています。私はGDBが次の形式でスタック上の各フレームを返すので、何が起こっているのかを知ることができません:#0 0x00007ffff7007478 in ?? ()。GDBにセグメンテーションフォルトデータが表示されない

フレーム#5は0x0000000000000000です。 ()と私はそれが0番地にあるということが面白いと思っています、それは特に何かを意味しますか?

私はGDBを更新しましたし、私のgがフラグをコンパイル++は、以下のとおりです。-std = C++ 11 -g -O0 -ggdb

任意のアイデア?もっと必要なものがあれば教えてください。ありがとう!

+4

これは、コードにバグがあることを意味します。 [mcve]がなければ、それ以上の答えは不可能です。 –

+0

多くの場合、0x0スタックフレームはスタック上書きまたはヌル関数ポインタへの呼び出しを示します –

+0

'-ggdb'は' -g'を意味します。 '-fsanitize = address'でコンパイルしたり、valgrindの下でプログラムを実行したりすることをお勧めします。 – kfsone

答えて

0

0x0000000000000000 in ??()は、NULLポインタの逆参照が原因である可能性があります。
正しいデバッグフラグが有効になっていますが、コールスタックは見ていません。

gdbからプログラムを再実行し、クラッシュさせてからbtを実行してください。
これはあなたにバックトレースを与えるでしょう。問題が発生した可能性が高い場所で最後に記述された機能を見つけることができます。

関連する問題