Go to the previous, next section.
perl を -d オプションをつけて起動すると、
デバッグモニタのもとでスクリプトが実行される。
デバッガは最初の実行可能文の前で止まり、以下に示すコマンドを入力するよう促す。
- `h'
- ヘルプメッセージを出力する。
- `T'
- スタックをトレースする。
- `s'
- シングルステップ。次の文の最初に達するまで実行する。
- `n'
Next. 次の文の始めまで、サブルーチンに入らずに実行する。
- `f'
Finish. 現在のサブルーチンが終わるまで文を実行する。
- `c'
- 続行。次にブレークポイントに達するまで実行する。
- `c line'
- 指定した行まで続行する。一時的なブレークポイントを指定した行に設定する。
- `<CR>'
- 最後の
n または s を繰り返す。
- `l min+incr'
min から incr+1 行表示する。
min を省略すると、最後に表示した次の行から表示する。
incr を省略すると、最後の incr の値を用いる。
- `l min-max'
- 指定した範囲の行を表示する。
- `l line'
- 指定した行のみ表示する。
- `l'
- 次のウィンドウを表示する。
- `-'
- 前のウィンドウを表示する。
- `w line'
- 行付近のウィンドウを表示する。
- `l subname'
- サブルーチンを表示する。長いサブルーチンの場合は最初だけ表示する。
更に表示するには `l' を使う。
- `/pattern/'
- 正規表現の後方探索。最後の
/ はつけなくてもよい。
- `?pattern?'
- 正規表現の前方探索。最後の
? はつけなくてもよい。
- `L'
- ブレークポイントまたはアクションを持つ行を表示する。
- `S'
- 全サブルーチン名を表示する。
- `t'
- トレースモードを on/off するトグル。
- `b line condition'
- ブレークポイントをセットする。
行を省略すると、次に実行される現在行にセットする。
コンディションを指定すると、その文に来る度に評価され、
コンディションが真の時のみブレークポイントとして扱われる。
ブレークポイントは実行可能な文の最初の行にのみセット可能である。
- `b subname condition'
- サブルーチンの最初の実行可能行にブレークポイントをセットする。
- `d line'
- ブレークポイントを削除する。
行を省略すると、次に実行される現在行のブレークポイントを削除する。
- `D'
- 全ブレークポイントを削除する。
- `a line command'
- 行にアクションをセットする。
複数行のコマンドは改行の前にバックスラッシュをつけることで入力可能である。
- `A'
- 全ての行アクションを削除する。
- `< command'
- デバッガがプロンプトを出す前に実行するアクションをセットする。
複数行のコマンドは改行の前にバックスラッシュをつけることで入力可能である。
- `> command'
- プロンプトの後、
コマンドを入力してスクリプト実行に移る時に実行されるアクションをセットする。
複数行のコマンドは改行の前にバックスラッシュをつけることで入力可能である。
- `V package'
- パッケージ内の全変数を表示する。
デフォルトは
main パッケージである。
- `! number'
- デバッグコマンドを再実行する。
番号を省略すると、直前のコマンドを再実行する。
- `! -number'
- 指定した数だけ前に実行したコマンドを再実行する。
- `H -number'
- 指定した数のコマンドを最後から表示する。
1 文字より長いコマンドのみ表示される。番号を省略すると、全部表示する。
- `q'
- `^D'
- 終了。
- `command'
- コマンドを perl の文として実行する。
セミコロンをつけなくても自動的につけられる。
- `p expr'
- `print DB'OUT expr' と同じ。
STDOUT がリダイレクトされていても、
ファイルハンドル
DB'OUT は /dev/tty にオープンされている。
デバッガを修正したい場合は、
perl ライブラリから `perldb.pl' をコピーし、必要に応じて修正する。
(コマンドラインに -I. を追加することも必要だろう。)
`.perldb' に初期化コードを書くことによってカスタマイズができる。
例えば、次のようにしてエイリアスを定義できる。
$DB'alias{'len'} = 's/^len(.*)/p length($1)/';
$DB'alias{'stop'} = 's/^stop (at|in)/b/';
$DB'alias{'.'} =
's/^\e./p "\e$DB\e'sub(\e$DB\e'line):\et",\e$DB\e'line[\e$DB\e'line]/';
Go to the previous, next section.