web-dev-qa-db-ja.com

GDBブレークポイント

特定のプログラムをデバッグするたびに追加したいブレークポイントのリストがあります。

すべてのブレークポイント情報をファイルに入れて、各デバッグセッションの開始時に使用する方法はありますか?言い換えれば、私は'run'コマンドを与える前にブレークポイント情報を含むスクリプトファイルをGDBに提供できますか?

32
Sachin Khot

からman gdb(1)

  -x file
           Execute GDB commands from file file.

次に、ブレークポイントをファイルに入れることができます。

break [file:]function
break [file:]function
...
29
Mark Renouf

必要なすべてのコマンドを、デバッグしている実行可能ファイルと同じディレクトリにある.gdbinitファイルに入れることができます。

何かのようなもの:

b somefile.c:128
b otherfile.c:33

正常に動作するはずです。

編集:はい、-xコマンドライン引数を使用すると、GDBの起動時に任意のファイルを実行できますが、プロジェクトごとに.gdbinitファイルを維持すると、ファイルが自動的に実行されます。 (ファイル名を指定する必要はありません)。また、プロジェクト固有の.gdbinitファイルをソース管理に簡単に追加できます。つまり、チームメンバー全員が同じデバッグ機能を利用できます。

25
Sean Bright

外部ファイルを使用する以外に、gdbを開いたままにすることもできます。gdbの下のバイナリが変更された場合、次に実行するときにブレークポイントを失うことなく、バイナリとライブラリを再読み込みします。

12
Mitch Haile

ブレークポイントの保存コマンドは、gdb7.2以降の新機能です。ブレークポイントをファイルに保存した後、sourceコマンドを使用して後のgdbセッションにブレークポイントを読み込むことができます。次に、gdbを実行するときに、-x <filename>オプションを使用できます。

save breakpoints <filename>
  Save all current breakpoint definitions to a file suitable for use
  in a later debugging session.  To read the saved breakpoint
  definitions, use the `source' command.
10
aculich

または使用:

gdb --command=commands.gdb ./a.out

ここで、commands.gdbはブレークポイントを含むテキストファイルです。

--commandはおそらく-xと同じです

2
Johan

GDBのドキュメントには、「ブレークポイントを保存」および「ソース」コマンドを使用できると記載されています。 http://sourceware.org/gdb/current/onlinedocs/gdb/Save-Breakpoints.html#Save-Breakpoints 。ただし、これは私のgdb(7.1-ubuntu)では機能しません。

1