ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
![]() |
Oracle Solaris Studio 12.3: dbx コマンドによるデバッグ Oracle Solaris Studio 12.3 Information Library (日本語) |
スコープとは、変数または関数の可視性について定義されたプログラムのサブセットです。あるシンボルの名前が特定の実行地点において可視となる場合、そのシンボルは「スコープ範囲内にある」ことになります。C 言語では、関数はグローバルまたはファイル固有のスコープを保持します。変数は、グローバル、ファイル固有、関数、またはブロックのスコープを保持します。
次の変数は現在のスレッドまたは LWP の現在のプログラムカウンタを常に反映し、表示スコープを変更するコマンドには影響されません。
現在のプログラムカウンタのスコープ
現在の行番号
現在の関数
$func が所属するクラス
現在のソースファイル
現在のロードオブジェクト
プログラムのさまざまな要素を dbx を使用して検査する場合、 表示スコープを変更します。dbx は、式の評価中にあいまいなシンボルを解析するなどの目的で表示スコープを使用します。たとえば、次のコマンドを入力すると、dbx は表示スコープを使用して印刷する i を判断します。
(dbx) print i
各スレッドまたは LWP は独自の表示スコープを持っています。スレッド間を切り替えるときに、各スレッドはそれぞれの表示スコープを記憶します。
表示スコープのいくつかのコンポーネントは、次の事前定義済み ksh 変数内で可視になります。
現在の表示スコープ
現在の表示ロードオブジェクト
現在の表示ソースファイル
現在の表示行番号
$vfunc が属するクラス
現在の表示関数
現在の表示スコープのすべてのコンポーネントは、相互互換性があります。たとえば、関数を含まないファイルを表示する場合、現在の表示ソースファイルが新しいファイル名に更新され、現在の表示関数が NULL に更新されます。
次のコマンドは表示スコープを変更するもっとも一般的な方法です。
func
file
up
down
frame
list procedure
debug コマンドおよび attach コマンドは最初の表示スコープを設定します。
ブレークポイントに達すると、dbx によって表示スコープが現在の位置に設定されます。stack_find_source 環境変数 (「dbx 環境変数の設定」参照) が ON に設定されている場合、dbx はソースコードを持っているスタックフレームを検索してアクティブにします。
up コマンド (「up コマンド」参照)、down コマンド (「down コマンド」参照)、frame number コマンド (「frame コマンド」参照)、または pop コマンド (「pop コマンド」参照) を使用して現在のスタックフレームを変更すると、新しいスタックフレームからのプログラムカウンタに従って dbx によって表示スコープが設定されます。
list コマンド (「list コマンド」を参照) によって使用される行番号位置は、list function または list file コマンドを使用した場合にのみ表示スコープを変更します。表示スコープが設定されると、list コマンド用の行番号位置が表示スコープの最初の行番号に設定されます。続けて list コマンドを使用すると、list コマンド用の現在の行番号位置が更新されますが、現在のファイル内で行をリストしているかぎり表示スコープは変更されません。たとえば、次のように入力すると、dbx によって my_func のソースの開始位置がリストされ、表示スコープが my_func に変更されます。
(dbx) list my_func
次のように入力すると、dbx によって現在のソースファイル内の行 127 がリストされ、表示スコープは変更されません。
(dbx) list 127
file コマンドまたは func コマンドを使用して現在のファイルまたは現在の関数を変更すると、表示スコープも更新されます。