プログラムの実行は、その上位のプログラムから受け取った信頼できる情報に よって影響されます。GDB は、この情報を記述する方法を提供していますが、 あなたは、プログラムをスタートする前にこのことを行っておく必要があります。 (プログラム起動後も変更可能ですが、この変更は、あなたがプログラムを 再起動するまでは何も影響を与えません。) これらの情報は、次の3つのカテゴリーに分けられます:
あなたのプログラムがいったん `run' コマンドで起動されたならば、 下位の関数コールによってもたらされる式を評価できることを覚えておいて 下さい。“8.1 式”を参照して下さい。もし、あなたが関数を単にそれ自身の範囲で 評価したい場合、`set' コマンドを使うことができます。 “10.1 変数への代入”を参照して下さい。
引数なしの `run' は、前回に実行した `run' と同一の引数を 使います。
`set args' というコマンドは、次にプログラムが動作する時に使われる 引数を指定する時に使います。もし、`set args' に引数がなかった 場合は、次のプログラムの実行には引数がないことを意味します。もし、 あなたが引数を指定してプログラムを実行した後、次に引数なしで実行したい 場合は、これがその唯一の方法です。
例えば、次のコマンド:
set env USER = foo
GDB のワーキングディレクトリは、コマンドへのデフォルト値として、 GDB を起動したディレクトリと同一の場所が供給されます。 “2. GDB が扱うファイルの解説”を参照して下さい。
あなたは、プログラムの入出力に対するリダイレクトを、`run' コマンド への `sh'-スタイルのリダイレクションによって行うことができます。 例えば、
run > outfile
`outfile'
に転換します。
プログラムの入出力を指定する別の方法は、`tty' コマンドを使うと いうものです。このコマンドは引数としてファイル名を受け取り、結果として このファイルを `run' コマンドがこの後デフォルトで利用するように 設定します。これはまた、この後 `run' コマンドが起動した時のために、 チャイルドプロセスのための端末のコントロールをリセットします。例えば、
tty /dev/ttyb
`/dev/ttyb'
とし、それらの制御端末をそこに設定します。
`tty' コマンド指定後の `run' による明白なリダイレクトは 入出力リダイレクトとして有効であり、制御端末には有効になりません。
あなたが `tty' コマンドやリダイレクトによる入力のある `run' コマンドを使った場合、それはあなたのプログラムの入力 だけに影響を及ぼします。GDB への入力は、依然、あなたの端末から 受け取られます。
`attach' コマンドは、あなたがデバッグしたいプロセスのプロセス-IDと
いう一つの引数のみ受け付けます。(プロセスのプロセス-IDを見つけ出す
一般的な方法は、ps
ユーティリティを使うことです。)
このアレンジの後で、プロセスをデバッグするために GDB が最初に行う ことは、それを止めることです。あなたは、普通、プロセスを `run' で 起動した場合に可能な全ての GDB のコマンドを使って、所属したプロセスに 対して調査と修整をかけることができます。 ブレークポイントの挿入、ステップ実行や継続、記憶領域の修整も可能です。 もし、GDB にプロセスを所属させた後で、あなたがそのプロセスに対して 実行の継続を望むのなら、`continue' コマンドを使うことができます。
所属させられたプロセスに対するデバッグが終了したならば、それを GDB の 管理下から解放するために `detach' コマンドを使うことができます。 `detach' コマンドの後、そのプロセスと GDB は完全に無関係な状態と なり、他のプロセスを `attach' したり、`run' を実行したり できるようになります。
もし、`run' コマンドによって所属させられているプロセスが存在する 間にあなたが GDB を終了する場合、あなたは、そのプロセスを kill する ことになります。あなたは、このことを実施していいかどうかの承認について 尋ねられることになります。
`attach' コマンドは、また、シリアル接続を通したリモートマシンの デバッグにも用いられます。詳しくは、“14.1 リモート・デバッギング用のコマンド” を参照して下さい。
このコマンドは、コアダンプをデバッグする場合の代用として便利なものです。 GDB は、プログラムが実際に動作している場合コアダンプ・ファイルを無視 しますので、`kill' コマンドが、コアダンプ・ファイルを再び利用 させるための唯一の方法です。
これはまた、プログラムをいったんデバッガの外で起動した後、再びその デバッグに戻りたいような場合にも便利です。
`kill' コマンドは、更に、多くのシステムでプロセスとして動作して いるので修整不能な実行可能ファイルから、プログラムをリコンパイル・ 再リンクしたいような場合にも利用できます。しかし、このような場合は、 あなたが新しいバージョンとして望む、リコンパイルされたプログラムの新しい シンボルテーブルを必要とする前に、いったん GDB から抜けて GDB を リスタートすることが、このことを行う最も簡単な方法です。