Previous: Keyword Commands, Up: Debugging [Contents][Index]
デフォルト値: false
もしdebugmodeが trueなら、
Maximaのエラーが起こった時Maximaはデバッガーを開始します。
ユーザーはコールバックを検査したり、ブレイクポイントを設定したり、Maximaコードをステップ実行したりなど
コマンドを入力することができます。
デバッガーコマンドのリストに関しては、 debuggingを参照してください。
debugmodeをイネーブルにしても、Lispのエラーは捕らえられません。
デフォルト値: false
refcheckがtrueの時、
Maximaは
計算の中で、バイドされた変数が最初に使われる度にメッセージを印字します。
デフォルト値: false
もしsetcheckが(添字付きでもよい)変数のリストに設定されているなら、
Maximaは
変数またはそれらの添字付き出現が通常の割り当て演算子:、::割り当て演算子、
または関数引数バインドでバインドされた時
(しかし関数割り当て:=やマクロ割り当て::=演算子でバインドされた時以外)
はいつでも、
メッセージを印字します。
メッセージは変数名とバインドされた値から構成されます。
setcheckは、
allまたはtrueに設定することができ、
それによって、すべての変数を含みます。
setcheckの新しい要素のそれぞれは、
チェックする変数の新しいリストを確立し、
以前setcheckに割り当てられたいかなる変数も忘れられます。
もし自身以外の何かに評価されるなら、
setcheckに割り当てられた名前はクォートしなければいけません。
例えば、もしx, y, zが既にバインドされているなら、
チェックする変数のリストに置くには、
setcheck: ['x, 'y, 'z]$
をタイプしてください。
setcheckリスト上の変数が、例えば、X: 'Xのように、
それ自身に割り当てられた時は、なにも印字されません。
デフォルト値: false
setcheckbreakがtrueの時、
setcheckリスト上の変数が新しい値を割り当てられた時はいつでも
Maximaはブレイクプロンプトを出します。
ブレイクは、割り当てが実行される前に起こります。
この時点で、setvalが変数が割り当てられようとしている値を保持します。
ゆえに、
setvalに割り当てることで、違う値を割り当てることができます。
setcheckとsetvalも参照してください。
setcheckbreakが起こった時、変数が設定されようとしている値を保持します。
ゆえに、
setvalに割り当てることで、違う値を割り当てることができます。
setcheckとsetcheckbreakも参照してください。
timerは、
タイミング統計が収集される関数のリストに与えられた関数f_1, …, f_n
それぞれを入れます。
timer(f)$ timer(g)$は、リストにfを入れ、その後gを入れます;
リストはあるコールから次へ累積されます。
timer(all)は、計測される関数のリストに
(グローバル変数functionsで指名されたように)
ユーザー定義関数すべてを入れます。
引数なしでは、
timerは計測される関数のリストを返します。
Maximaは、計測される関数のリストに関して、
関数それぞれを実行するのに費やされる時間を記録します。
timer_infoは、タイミング統計を返します。
関数コール毎に経過した平均時間、コール回数、総経過時間を含みます。
untimerは、計測される関数のリストから関数を削除します。
timerは引数をクォートします。
f(x) := x^2$ g:f$ timer(g)$は、fをタイマーリストに入れません。
もしtrace(f)が有効なら、timer(f)は有効ではないです;
traceとtimerが同時に有効にはできません。
timer_devalueも参照してください。
untimerはタイマーリストから
与えられた関数f_1, …, f_nそれぞれを削除します。
引数なしの時、
untimerは、現在、タイマーリスト上の関数すべてを削除します。
untimer (f)が実行された後、
timer_info() (引数なし)は、
現在タイマーリスト上にない関数についての情報を返しませんけれども、
timer_info (f)は、まだ以前に集計されたタイミング統計を返します。
timer (f)は、
タイミング統計すべてをゼロに再設定し、
fをタイマーリストに再び入れます。
デフォルト値: false
timer_devalueがtrueの時、
Maximaは、計られる関数から
他の計測される関数で費やされた時間を引きます。
そうでなければ、関数それぞれについて報告された時間は、
他の関数で計測される時間を含みます。
計測されない関数で費やされた時間は、総時間から引かれないことに注意してください。
timerとtimer_infoも参照してください。
与えられた関数f_1, ..., f_n,
timer_infoは、
関数それぞれのタイミング情報を含む
行列を返します。
引数なしでは、
timer_infoは、
現在タイマーリスト上の関数すべてについての
タイミング情報を返します。
The matrix returned by
timer_infoが返す行列は、関数名、
関数コール毎の時間、関数コールの回数、総時間、
gctime
を含みます。
gctimeは、元のMacymaの「ガーベッジコレクション時間」を意味しましたが、
今はいつもゼロです。
timer_infoが戻り値を構成するデータは、
get関数によっても得られることができます:
get(f, 'calls); get(f, 'runtime); get(f, 'gctime);
timerも参照してください。
関数 f_1, …, f_nが与えられたとして、
traceは、Maximaに、
それらの関数がコールされたときはいつでも
デバッグ情報を印字するよう指示します。
trace(f)$ trace(g)$は、トレースする関数のリストに
fを、それからgを入れます;
リストは1回のコールから次へ累積します。
trace(all)は、(グローバル変数functionsで指名されたように)
ユーザー定義関数すべてをトレースする関数のリストに入れます。
引数なしでは、
traceは、現在とレースする関数すべてのリストを返します。
untrace関数はトレースをディセーブルします。
trace_optionsも参照してください。
traceは引数をクォートします。
例えば、
f(x) := x^2$ g:f$ trace(g)$は、
fをトレースリストに入れません。
関数が再定義された時、
タイマーリストから削除されます。
例えば、
timer(f)$ f(x) := x^2$の後、
関数fはもはやタイマーリストにありません。
もしtimer (f)が有効なら、
trace (f)は有効ではありません;
traceとtimerは、同じ関数で同時には有効にできません。
関数fについてトレースオプションを設定します。
いかなる以前のオプションも破棄されます。
trace_options (f, ...)は、
もし(trace_optionsの前でも後でも).
trace (f)もコールされないなら、
有効になりません。
trace_options (f)は、
オプションすべてをデフォルト値に再設定します。
オプションキーワードは以下の通りです:
noprint
関数の入り口と出口でメッセージを印字しません。
break
関数に入る前と関数を抜けた後、ブレイクポイントを置きます。
breakを参照してください。
lisp_print
引数を表示し、Lispオブジェクトとして値を返します。
info
関数の入れ口と出口で-> trueを印字します
errorcatch
エラーをチャッチし、
エラーを知らせるためのオプションに応じて、
関数コールを再試行するか、戻り値を指定します。
トレースオプションは、2つの形式で指定されます。
オプションキーワード単体の存在は、
オプションを無条件に実行します。
(foo: trueか似た形式を指定することでは、
オプションfooは実行されないことに注意してください;
キーワードはクォートする必要はないことにも注意してください。)
オプションキーワードを述語論理関数で指定することは、
オプションを述語論理上の条件付きにします。
述語論理関数の引数リストは、いつも
[level, direction, function, item]です。
ここで、levelは関数の再帰レベルで、
directionはenterかexit、functionは、
関数名、
name of the function, and
itemは(入るときの)引数リストか(出るときの)戻り値です。
以下は無条件とレースオプションの例です:
(%i1) ff(n) := if equal(n, 0) then 1 else n * ff(n - 1)$ (%i2) trace (ff)$ (%i3) trace_options (ff, lisp_print, break)$ (%i4) ff(3);
以下は述語論理上の条件のbreakオプションを持つ同じ関数です:
(%i5) trace_options (ff, break(pp))$
(%i6) pp (level, direction, function, item) := block (print (item),
return (function = 'ff and level = 3 and direction = exit))$
(%i7) ff(6);
Previous: Keyword Commands, Up: Debugging [Contents][Index]