次: , 前: Targets, 上: Targets


13.1 アクティブ・ターゲット

ターゲットには3つのクラスがあります。 プロセス、コア・ファイル、 そして、 実行ファイルです。 GDBは同時に、 1クラスにつき1つ、 全体で最高で3つまでアクティブなターゲットを持つことができます。 これにより、 (例えば) コア・ファイルに対して行ったデバッグ作業を破棄することなく、 プロセスを起動してその動作を調べることができます。

例えば、 `gdb a.out'を実行すると、 実行ファイルa.outが唯一のアクティブなターゲットになります。 コア・ファイル (おそらくは、 前回実行したときにクラッシュしてコア・ダンプしたもの) を併せて指定すると、 GDBは2つのターゲットを持ち、 メモリ・アドレスを知る必要がある場合には、 それを知るために2つのターゲットを並行して使用します。 この場合、 まずコア・ファイルを参照し、 次に実行ファイルを参照します。 (典型的には、 これら2つのクラスのターゲットは相互に補完的です。 というのも、 コア・ファイルには、 プログラムが持っている変数などの読み書き可能なメモリ域の内容とマシン・ステータスだけがあり、 実行ファイルには、 プログラムのテキストと初期化されたデータだけがあるからです)。

runコマンドを実行すると、 ユーザの実行ファイルはアクティブなプロセス・ターゲットにもなります。 プロセス・ターゲットがアクティブな間は、 メモリ・アドレスを要求するすべてのGDBコマンドは、 プロセス・ターゲットを参照します。 アクティブなコア・ファイル・ターゲットや 実行ファイル・ターゲットの中のアドレスは、 プロセス・ターゲットがアクティブな間は、 隠された状態になります。

新しいコア・ファイル・ターゲットや実行ファイル・ターゲットを選択するには、 core-fileコマンドやexec-fileコマンドを使用します (see Commands to specify files)。 既に実行中のプロセスをターゲットとして指定するには、 attachコマンドを使用します (see Debugging an already-running process)。