Google

Go to the first, previous, next, last section, table of contents.


コマンドの解説

コマンドは dbx のコマンドの内必要最小限のものを採用した. 更に, gdb のコマンドからもいくつか便利なものを採用した. 実際の機能は dbx とほぼ同様であるが, step, next は, 次の行ではなく次の文を実行する. 従って, 1行に複数の文がある場合は, その文の数だけ next を実行しなければ次の行に進めない. また, dbx と同様 `.dbxinit' を読み込むので, dbx と同じ alias を使うことがで きる.

step
次の文を実行する. 次の文が函数を含むとき, その函数に入る.
next
次の文を実行する.
finish
現在実行中の函数の実行が終了した時点で再びデバッグモードに入る. 誤って step を実行した場合に有効である.
cont
quit
デバッグモードから抜け, 実行を継続する.
up [n]
スタックフレームを 1 段 (引数 n がある時は n 段) 上がる. これにより, そのスタックフレームに属する変数の値の参照, 変更ができる.
down [n]
スタックフレームを 1 段 (引数 n がある時は n 段) 下がる.
frame [n]
引数がないとき, 現在実行中の函数を表示する. 引数があるとき, スタックフレームを番号 n のものに設定する. ここで スタックフレームの番号とは where により表示される呼び出し列において, 先頭に表示される番号の ことである.
list [startline]
list function
現在行, または startline, または functionの先頭から 10 行ソー スファイルを表示する.
print expr
expr を表示する.
func function
対象函数を function に設定する.
stop at sourceline [if cond]
stop in function
sourceline行目, または function の先頭にブレークポイントを 設定する. ブレークポイントは, 函数が再定義された場合自動的に取り消され る. if が続く場合, cond が評価され, それが 0 でない場合に 実行が中断し, デバッグモードに入る.
trace expr at sourceline [if cond]
trace expr in function
stop と同様であるが, trace では単に expr を表示する のみで, デバッグモードには入らない.
delete n
ブレークポイント n を取り消す.
status
ブレークポイントの一覧を表示する.
where
現在の停止点までの呼び出し列を表示する.
alias alias command
commandalias の別名を与える.

print の引数として, トップレベルにおけるほとんどすべての式 がとれる. 通常は, 変数の内容の表示が主であるが, 必要に応じて次の ような使い方ができる.

  • 変数の書き換え 実行中のブレークポイントにおいて, 変数の値を変更して実行を継続させたい 場合, 次のような操作を行えばよい.
    (debug) print A
    A = 2
    (debug) print A=1
    A=1 = 1
    (debug) print A
    A = 1
    
  • 函数の呼び出し 函数呼び出しも式であるから, print の引数としてとれる.
    (debug) print length(List)
    length(List) = 14
    
    この例では, 変数 List に格納されているリストの長さを length() により調べている.
    (debug) print ctrl("cputime",1)
    ctrl("cputime",1) = 1
    
    この例は, 計算開始時に CPU 時間の表示の指定をし忘れた場合などに, 計算 途中でデバッグモードから指定を行えることを示している. また, 止むを得ず計算を中断しなければならない場合, デバッグモードから bsave() などのコマンドにより途中結果をファイルに保存することも できる.
    (debug) print bsave(A,"savefile")
    bsave(A,"savefile") = 1
    
    デバッグモードからの函数呼び出しで注意すべきことは, print の引数がユーザ定義函数の呼び出しを含む場合, その函数呼び出しでエラーが起こった場合に元の函数の実行継続が不可能 になる場合があるということである.


Go to the first, previous, next, last section, table of contents.