2017-01-30 6 views
1

GNU/Linuxのclangコンパイラで見つかった問題をデバッグしています(hereと報告)。問題を見つけるには、clangが出力ファイルを書き込むポイントから逆方向にデバッグする必要があります。gdbのcatchpointがwrite syscallで動作しない

(gdb) break write 
Breakpoint 3 at 0x7ffff6a7c700: write. (2 locations) 

しかし、私はテストプログラムをコンパイルするとき、何もブレークポイントがトリガされていない:私もブレークポイントを設定し

(gdb) catch syscall write 
Catchpoint 2 (syscall 'write' [1]) 

:gdbのちょうど終了

は、私は、書き込みシステムコールにキャッチポイントを設定してみました通常は。私は出力ファイルを書き込むことを確認したので、どこかで呼び出されなければなりません。誰が私がここで間違っているかもしれないかを知っていますか?ありがとう!

答えて

1

clang -cc1ではなく、clangのデバッグが最も一般的な可能性があります。ドライバは、スタックされたトレースやその他のものを、生成されたプログラムのエラーをキャッチすることによって簡単に提供するために再実行します。clangは、ブレークポイントを設定することができません。

-vと一緒にclangを使用して-cc1コマンドラインを取得し、gdb -argsをそれに設定することができます。

+0

ああ、ありがとう!私はclang -cc1について知らなかった。 -cc1をデバッグするには、コマンドライン引数に-cc1を追加するだけですか? –

+0

私はそれを反映するために私の答えを更新しました。 – echristo

+0

ありがとう!私は最初のコマンドを-vで実行し、gdbのargsを設定してブレークポイントを起動させました!とても有難い!私はこれを答えとしてマークしました。 –

関連する問題