プロセスには、1 つまたは複数の実行スレッドが含まれています。スレッドは関数を実行します。関数とは、コンパイラーによりソースファイル内のソース行から生成された命令のシーケンスです。
デバッガーコマンドを入力してプロセスを操作すると、コマンドを適用するスレッドやソースファイルを繰り返し指定しなければならず、手間がかかります。デバッガーはプロセスを停止するたびに、コマンドのスタティック・コンテキストとダイナミック・コンテキストを再確立してこれを回避します。ダイナミック・コンテキストのコンポーネントはプログラムの実行ごとに異なり、スタティック・コンテキストのコンポーネントは常に同じです。
これらのコンテキストのコンポーネントは、デバッガー変数またはほかのコマンドを使用して表示できます。
スタティック・コンテキストには次のものが含まれます。
現在のプログラム |
info sharedlibrary (GDB モード) または listobj (IDB モード)、info file |
現在のファイル |
print $curfile |
現在の行 |
print $curline |
ダイナミック・コンテキストには次のものが含まれます。
where |
現在のコールフレーム |
print $curprocess |
現在のプロセス |
print $curthread |
現在のスレッド |
thread |
デバッガーにプロセスのコントロールを引き渡す原因となったイベントを実行しているスレッド。 |
スタティック・コンテキストとダイナミック・コンテキストが変更されると、デバッガーはそれぞれのコンポーネントの一貫性を維持します。デバッガーは、プロセスの停止位置を基に現在のファイルと行を特定しますが、次のコマンドを使用して、ダイナミック・コンテキストを直接変更することもできます。
frame (GDB モード)
up または down
func (IDB モード)
process (IDB モード)
thread
プログラムをアンロードするには、file (GDB モード) または unload (IDB モード) コマンドを使用します。