2017-12-04 9 views
0

私はデバッグシンボル(コンパイル時に-gフラグを追加)を再構築し、私はUNIX端末にC言語でセグメンテーションフォールトの原因となっているラインを知ることを得ることができる方法セグメント違反の原因となっている回線番号を取得するにはどうすればよいですか?

+2

デバッガ(GDBなど)でコードを実行します。 –

+0

クラッシュするまで一度に1行ずつコードをステップ実行します。 – dasblinkenlight

+2

セグメンテーションフォルトは、*未定義の動作*の症状です。起こっている行は必ずしもそれを引き起こす行ではありません。 –

答えて

1
  1. を知りたいです。
  2. 実行gdb。クラッシュオン
    • gdb <binary name>
    • gdbで)run <binary name> <args>
  3. 、スタックトレースを参照してくださいbacktraceコマンドを使用します。違反行はスタックの一番上にありますが、segfaultがいくつかのライブラリコードに含まれている場合は、さらに見下す必要があります。
関連する問題