0
私はデバッグシンボル(コンパイル時に-g
フラグを追加)を再構築し、私はUNIX端末にC言語でセグメンテーションフォールトの原因となっているラインを知ることを得ることができる方法セグメント違反の原因となっている回線番号を取得するにはどうすればよいですか?
私はデバッグシンボル(コンパイル時に-g
フラグを追加)を再構築し、私はUNIX端末にC言語でセグメンテーションフォールトの原因となっているラインを知ることを得ることができる方法セグメント違反の原因となっている回線番号を取得するにはどうすればよいですか?
gdb
。クラッシュオン
gdb <binary name>
gdb
で)run <binary name> <args>
backtrace
コマンドを使用します。違反行はスタックの一番上にありますが、segfaultがいくつかのライブラリコードに含まれている場合は、さらに見下す必要があります。
デバッガ(GDBなど)でコードを実行します。 –
クラッシュするまで一度に1行ずつコードをステップ実行します。 – dasblinkenlight
セグメンテーションフォルトは、*未定義の動作*の症状です。起こっている行は必ずしもそれを引き起こす行ではありません。 –