2017-01-02 11 views
-1

申し訳ありませんが、タイトルが分かりません。GDBのglibc機能を停止するのを止めてください

私はセグメンテーションフォールトを見つけるために、GDBを通じて私のプログラムを実行すると、私は何千人も、このゴミのラインの取得:上と上と上

(gdb) step 
_IO_new_file_xsputn (f=0x76fa0b40 <_IO_2_1_stdout_>, data=0x7efff284, n=7) at fileops.c 
1279 fileops.c: No such file or directory. 
(gdb) step 
1273 in fileops.c 
(gdb) step 
1279 in fileops.c 
(gdb) step 
1286 in fileops.c 
(gdb) step 
1288 in fileops.c 
(gdb) step 
1289 in fileops.c 
(gdb) step 
1292 in fileops.c 
(gdb) step 
1294 in fileops.c 
(gdb) step 
1292 in fileops.c 

を...と。私は何度stepを入力する(またはをEnterキーを押す)しなければならない

  • :ので、デバッグは非常に困難と退屈になります。
  • 無意味な情報に隠されているので、自分のプログラムの出力を見ることはほとんどありません。
  • を繰り返し入力するとを繰り返し入力すると、私が探しているSegフォルトが見逃されることがよくあります。

このような行を印刷しないようにgdbに指示するにはどうすればよいですか?

1273  in fileops.c 

いくつかの設定ファイルやコマンドラインオプションがありますか?

+1

'fileops.c'でglibcコードを実行する必要がありますか? '_IO_new_file_xsputn'関数から出てコードをデバッグし続けるだけで' finish'することができます。 – ks1322

+0

@ ks1322これは私が探しているものだと思います。私はすぐにそれを試してみるでしょう。あなたはそれを答えに入れることができますか? –

+1

関連:[GDBが関数(またはファイル)にステップインするのを防ぐ](http://stackoverflow.com/questions/1133365/preventing-gdb-from-stepping-into-a-function-or-file) 'skip'コマンドを参照してください。 –

答えて

2

fileops.cでglibcコードを実行する必要がありますか?

独自のコードをデバッグするだけの場合は、_IO_new_file_xsputnのコードをデバッグした後で、_IO_new_file_xsputnの機能が外に出るように、現在のフレームfinishを機能させる必要があります。

1

その通りです。stepが動作します - ステップ秒です。

ブレークポイントはどうですか? 1つを設定すると、デバッガはそこで停止し、コードを手動で進めることができます。

実行が中止されたセグメンテーションフォルトまたは同様の信号の場合は、プログラムが停止して位置実行に関する情報が得られなくなったときにrunおよびbacktraceにすることができます。そこでブレークポイントを設定すると、問題のある命令でプログラムが停止します。

2

gdbにこのような行を印刷しないようにするにはどうすればよいですか? stepコマンドを使用することにより

、あなたはまさにこの情報を印刷する GDBを尋ねました。

この情報が必要ない場合は、と尋ねてください。

私が探しているSegフォルトが頻繁に欠場します。

runとすれば、SIGSEGVが得られたらGDBは自動的に停止しますが、それは間違いありません。

あなたはと思われます。は、SIGSEGVの前にコード内で停止してそこからステップすることをお勧めします。これを達成するにはいくつかの方法がありますが、reverse debuggingがその1つです。 replay debuggingを使用することも別です。

実際にはの行為を表示していないため、アドバイスを提供するのは難しいです。

関連する問題