読み取り専用の ksh 事前定義済み変数がいくつか用意されています。以下に示す変数は常に有効です。
表 6-2 事前定義済み変数
変数 |
定義 |
---|---|
$pc |
現在のプログラムカウンタのアドレス (16 進数) |
$ins |
現在の命令の逆アセンブル |
$lineno |
現在の行番号 (10 進数) |
$line |
現在の行の内容 |
$func |
現在の関数の名前 |
$vfunc |
現在「表示している」関数 |
$class |
$func が所属するクラスの名前 |
$vclass |
$vfunc が所属するクラスの名前 |
$file |
現在のファイルの名前 |
$vfile |
現在表示しているファイルの名前 |
$loadobj |
現在のロードオブジェクトの名前 |
$vloadobj |
現在表示している現在のロードオブジェクトの名前 |
$scope |
逆引用符表記での現在の PC のスコープ |
$vscope |
現在表示している逆引用符表記での PC のスコープ |
$funcaddr |
$func のアドレス (16 進数) |
$caller |
$func を呼び出している関数の名前 |
$dllist |
dlopen イベントまたは dlclose イベントの後、dlopen または dlclose された直後のロードオブジェクトのリストが格納されます。$dllist の中の先頭の単語は実際には "+" または "-" です。これは、dlopen と dlclose のどちらが発生したかを示します。 |
$newhandlerid |
最後に作成されたハンドラの ID |
$proc |
現在デバッグ中のプロセスの ID |
$lwp |
現在の LWP の ID |
$thread |
現在のスレッドの ID |
$prog |
デバッグ中のプログラムの絶対パス名 |
$oprog |
$prog の古い値または元の値。これは、exec() に続いて、デバッグしていたものに戻る場合に便利です。 |
$exitcode |
プログラムの最後の実行状態を終了します。この値は、プロセスが実際には終了していない場合、空文字列になります。 |
function whereami { echo Stopped in $func at line $lineno in file $(basename $file) echo "$lineno¥t$line" }
次に示す変数は、when の本体内部でのみ有効です。
本体の実行中、$handlerid にはそれが属する when コマンドの ID が格納されます。次のコマンドは同じ結果になります。
when X -temp { do_stuff; } when X { do_stuff; delete $handlerid; }
イベントがブートプロセス中に起こると、true (真) に設定されます。新しいプログラムは、デバッグされるたびに、まず共有ライブラリのリストと位置を確認できるよう、ユーザーに通知されないまま実行されます。プロセスはその後終了します。ブートはこのようなシーケンスで行われます。
ブートが起こっても、イベントはすべて使用可能です。この変数は、デバッグ中に起こる sync および syncrtld のイベントと、通常の実行中に起こるこれらのイベントを区別するときに使用してください。
$sig |
イベントを発生させたシグナル番号 |
$sigstr |
$sig の名前 |
$sigcode |
適用可能な場合、$sig のサブコード |
$sigcodestr |
$sigcode の名前 |
$sigsender |
必要であれば、シグナルの送信者のプロセス ID |
$exitcode |
_exit(2) または exit(3) に渡された引数の値、または main の戻り値 |
$dlobj |
dlopen または dlclose されたロードオブジェクトのパス名 |
$syscode |
システムコールの番号 |
$sysname |
システムコールの名前 |
$reason |
シグナル、終了、強制終了、または切り離しのいずれか。 |