読み取り専用の ksh 事前定義済み変数がいくつか用意されています。次に示す変数は常に有効です。
変数 |
定義 |
---|---|
$ins |
現在の命令の逆アセンブル |
$lineno |
現在の行番号 (10 進数) |
$vlineno |
現在の表示行番号 (10 進数) |
$line |
現在の行の内容 |
$func |
現在の関数の名前 |
$vfunc |
現在の表示関数の名前 |
$class |
$func が所属するクラスの名前 |
$vclass |
$vfunc が所属するクラスの名前 |
$file |
現在のファイルの名前 |
$vfile |
現在表示しているファイルの名前 |
$loadobj |
現在のロードオブジェクトの名前 |
$vloadobj |
現在表示している現在のロードオブジェクトの名前 |
$scope |
逆引用符表記での現在の PC のスコープ |
$vscope |
現在表示している逆引用符表記での PC のスコープ |
$funcaddr |
$func のアドレス (16 進数) |
$caller |
$func を呼び出している関数の名前 |
$dllist |
dlopen イベントまたは dlclose イベントのあと、ロードされた、またはアンロードされた直後のロードオブジェクトのリストが格納されます。dllist の中の先頭の単語は実際には「+」または「-」です。これは、dlopen と dlclose のどちらが発生したかを示します。 |
$newhandlerid |
最後に作成されたハンドラの ID。この変数は、ハンドラを削除するコマンドのあとの未定義の値です。ハンドラを作成した直後に変数を使用します。dbx では、複数のハンドラを作成する 1 つのコマンドに対してすべてのハンドラ ID を取り込むことはできません。 |
$firedhandlers |
停止の原因となった最近のハンドラ ID のリストです。リストにあるハンドラには、status コマンドの出力時に「*」が付きます。 |
$proc |
現在デバッグ中のプロセスの ID |
$lwp |
現在の LWP の ID |
$thread |
現在のスレッドの ID |
$newlwp |
新しく作成した LWP の lwp ID |
$newthread |
新しく作成したスレッドのスレッド ID |
$prog |
デバッグ中のプログラムの絶対パス名 |
$oprog |
$prog の前の値は、$prog が「-」に戻るときに exec() に続いて、デバッグしていたものに戻る場合に使用します。$prog がフルパス名に展開され、$oprog がコマンド行または debug コマンドに指定されているプログラムパスを含みます。exec() が 2 回以上呼び出されると、オリジナルのプログラムには戻れません。 |
$exec32 |
dbx バイナリが 32 ビットの場合は true です。 |
$exitcode |
プログラムの最後の実行状態を終了します。この値は、プロセスが実際には終了していない場合、空文字列になります。 |
$booting |
イベントがブートプロセス中に起こると、true に設定されます。新しいプログラムは、デバッグされるたびに、共有ライブラリのリストと位置を確認できるよう、まず実行されます。プロセスはそのあと終了します。ブートはこのようなシーケンスで行われます。 ブートが起こっても、イベントはすべて使用可能です。この変数は、デバッグ中に起こる sync および syncrtld イベントと、通常の実行中に起こるイベントを区別するときに使用してください。 |
たとえば、whereami は次のように実装できます。
function whereami { echo Stopped in $func at line $lineno in file $(basename $file) echo "$lineno\t$line" } |
本体の実行中、$handlerid にはそれが属する when コマンドの ID が格納されます。次のコマンドは同じ結果になります。
when X -temp { do_stuff; } when X { do_stuff; delete $handlerid; } |
一部の変数は、以下の表に示すように、when コマンドの本文内および特定のイベント対してのみ有効です。
表 B–1 sig イベントに固有の変数
変数 |
内容の説明 |
---|---|
$sig |
イベントを発生させたシグナル番号 |
$sigstr |
$sig の名前 |
$sigcode |
適用可能な場合、$sig のサブコード |
$sigcodestr |
$sigcode の名前 |
$sigsender |
必要であれば、シグナルの送信者のプロセス ID |
表 B–2 exit イベントに固有の変数
変数 |
内容の説明 |
---|---|
$exitcode |
_exit(2) または exit(3) に渡された引数の値、または main の戻り値 |
表 B–3 dlopen および dlclose イベントに固有の変数
変数 |
内容の説明 |
---|---|
$dlobj |
dlopen または dlclose されたロードオブジェクトのパス名 |
表 B–4 sysin および sysout イベントに固有の変数
変数 |
内容の説明 |
---|---|
$syscode |
システムコールの番号 |
$sysname |
システムコールの名前 |
表 B–5 proc_gone イベントに固有の変数
変数 |
内容の説明 |
---|---|
$reason |
シグナル、終了、強制終了、または切り離しのいずれか。 |
表 B–6 thr_create イベントに固有の変数
変数 |
内容の説明 |
---|---|
$newthread |
新しく作成されるスレッドの ID (t@5 など) |
$newlwp |
新しく作成される LWP の ID (l@4 など) |
表 B–7 watch イベントに有効な変数
変数 |
内容の説明 |
---|---|
$watchaddr |
アドレスが書き込まれたり、読みだされたり、実行されたりします。 |
$watchmode |
次のいずれかです。r は読み込み、w は書き込み、x は実行。そのあとに次のいずれかが続きます。a は後、b は前。 |