Maple デバッガ
|
説明
|
|
•
|
デバッガが起動されると、式、実行される次のステートメント、および、デバッギングプロンプト (デバッギングウィンドウ内にプロンプト) を表示します。
|
•
|
デバッガが、ブレークポイントによって起動された場合 (stopatによって設定される場合)、表示された式は実行された最後のステートメントの結果です。
|
•
|
デバッガが、 変数のウォッチポイントによって起動された場合 (stopwhen により設定される場合)、式は等式で、その左辺は監視される変数名であり、右辺は変数に割り当てられる値を示します。
|
•
|
デバッガが、 エラーメッセージのウォッチポイントによって起動された場合 (stoperror により設定される場合)、 式はエラーメッセージです。
|
•
|
デバッギングプロンプトでは、以下のコマンドが利用可能です。角括弧内に示されるアイテムはオプションです。
|
|
他のブレークポイントまたはウォッチポイントに遭遇するまで、あるいは、実行が正常終了するまで、実行を継続します。
|
|
カレントの入れ子レベルで次のステートメントを実行します。ステートメントが制御構造 (例えば、"if") である場合、そのステートメントを含むレベル全体が実行された後に、実行は再び停止します。同様に、ステートメントが関数呼び出しを含む場合、その関数全体が同様に実行されます。ステートメントを実行後に、ブレークポイントが設定されたかのように、コントロールがデバッガに返ります。
|
|
どんなレベルでも次のステートメントを実行します。 続くステートメントが、カレントの入れ子のレベルであるかどうか、または、制御構造の本体内、または、関数呼び出し内にあるかどうかに依らず、続くステートメントの前で実行が停止します。
|
|
next と step の中間的なオプションです。 次のステートメントを実行します。 続くステートメントが、カレントの入れ子のレベルであるかどうか、または、制御構造の本体内にあるかどうかに依らず、カレントの関数内の続くステートメントの前で実行が停止します。呼び出された関数で、実行は停止しません。
|
|
現在の文の列が実行を終了するまで、あるいは、ブレークポイント、または、ウォッチポイントに遭遇するまで実行が続きます。コマンド outfrom が、ループ内で実行され、ループ内で停止する場合、end do を閉じた後、実行されるはずの最初の文の直前まで実行が続きます。ループ内で実行の停止を引き起こしたブレークポイントに、続くループの繰り返し内で再び遭遇すると、実行が再び停止することに注意して下さい。outfrom コマンドが実行され、if ステートメントの本体で停止する場合、end if で閉じた後、実行されるはずの最初のステートメントの直前まで実行が続きます。
|
|
カレントに実行している手続きが戻る後、実行されるべき最初の文まで、実行が続きます。
|
|
実行は完全に停止し、Mapleの最上位レベル (すなわち、プロンプト) に戻ります。
|
|
実行がカレントに停止している手続き呼び出しのスタックを示します。levels の数が指定される場合、levels 数のみが示されます (最も小さい level が示されます)。
|
|
実行がカレントに停止しているところに通じる手続き呼び出しの短縮したスタックを示します。call chain の手続きの名前のみがリストされます。
|
|
showstat [procName] [statNumber[..statNumber]]
|
|
指定した手続き (デフォルトでは、カレントに停止した手続き) を文番号とともに表示します。特定の文番号、または、文番号の範囲が与えられた場合、それらのステートメントのみが表示されます。 elided 文は、出力で "..." により表されます。
|
|
ブレークポイントを含むすべての手続き、すべてのウォッチポイント、さらに、すべてのエラーウォッチポイントのリストを表示します。
|
|
list [procName] [statNumber[..statNumber]]
|
|
showstat と同様に、何の引数も与えられていない場合を除いて、直前の5文、現在の文、次の文が示されます。これは、手続きのコンテキストをみる容易な方法です。
|
|
stopat [procName] [statNumber] [condition]
|
|
ブレークポイントが、指定した手続き (デフォルトでは、カレントに停止した手続き) の指定した文番号 (デフォルトでは、先頭の文) に設定されます。オプションの条件は、Boolean 式である必要がありますが、条件が満たされた場合に限り、ブレークポイントで実行の停止が発生します。条件が指定される場合、手続きの名前と文番号が指定される必要があります。
|
|
unstopat [procName] [statNumber]
|
|
指定した手続き (デフォルトでは、カレントに停止した手続き) の指定したブレークポイント (デフォルトでは、すべてのブレークポイント) が削除されます。
|
|
stopwhen [procName locOrGlobVar]
|
|
指定したローカル変数またはグローバル変数上にウォッチポイントを設定し、ウォッチポイントのカレントのリストを表示します。変数が指定されない場合、単に、ウォッチポイントのカレントのリストが表示されます。
|
|
unstopwhen [procName locOrGlobVar]
|
|
指定したローカル変数またはグローバル変数上のウォッチポイントをクリアし、ウォッチポイントのカレントのリストを表示します。 変数が指定されない場合、すべてのウォッチポイントがクリアされます。
|
|
指定したエラーにウォッチポイントを設定し、ウォッチポイントのカレントのリストを返します。エラーが指定されない場合、単に、ウォッチポイントのカレントのリストが表示されます。 "all"を渡す場合、実行が停止し、 とらえられないエラーが起きる場合でも、デバッガが起動されます。 "traperror" を渡す場合、何らかのエラーをとらえたときに実行が停止します。
|
|
指定したエラー上のウォッチポイントをクリアし、ウォッチポイントのカレントのリストを表示します。 エラーが指定されない場合、すべてのエラーウォッチポイントがクリアされます。
|
|
デバッガ実行時の lasterror または lastexception の値を表示します。 表示される値は、リストに入れられます; リスト内の値は、実際の値の一部ではありません。
|
|
式は、停止した手続きの文脈で評価され、結果が表示されます。変数名と評価のsemantics は、式は手続き内でオリジナルに現れたかのように、全く同じです。(seq() の制御変数として変数を使用することを除き、すでにローカル変数でない場合には、その変数をローカルにはしません)。 デバッガは、独自の環境で実行しているため、 式 lasterror と lastexception は、デバッガを起動させたエラーを参照しません。代わりに、コマンド showerror または showexception を使用して下さい。
|
|
statement Any-Maple-Expression
|
|
上記と同様に、式以外は大域的な文脈で評価され、結果が表示されます。キーワード statement は、Mapleの式の前に置きます。
|
|
式は、停止した手続きの文脈で評価され、結果は、大域変数、環境変数、または、停止した手続きの局所変数を参照することができる、式の左辺に割り当てられます。割り当て演算子が認識されるためには、割り当て演算子の前に空白を置く必要があります。
|
•
|
つぎの例は、デバッガの各制御フローコマンドの機能を説明します。計算は、proc1 を呼び出すことにより開始することが仮定されます。#START# の印の付いたラインは、実行の停止が仮定されたところです。#command# の形の他のラインは、その点でそれぞれのコマンドが 実行される場合、 実行がどこで停止するかを示します。
|
proc3 := proc()
#step# statement1;
statement2;
true;
end proc;
proc2 := proc()
statement1;
statement2;
if 1 < 2 then
#START# if proc3() then
#into# statement5;
statement6;
end if;
#next# statement7;
end if;
#outfrom# statement8;
end proc;
proc1 := proc()
statement1;
statement2;
proc2();
#return# statement4;
statement5;
end proc;
•
|
上の例で、cont コマンドは、実行が最後まで続くようにします。
|
•
|
式でないMaple の文 (たとえば、"if", "while" など) を、デバッガのプロンプトで入力することはできません。
|
•
|
debugger は、ブレークポイントまたはウォッチポイントに遭遇するか、あるいは、DEBUG 関数が実行される場合に、Mapleにより自動的に実行されるMaple 関数として実現されるべきです。debugger 関数は、ユーザにより起動されるべきではありません。
|
•
|
debugger 関数は、 Maple 言語のデバッガのためのユーザインタフェースを提供します。 グラフィカルユーザインタフェースとともにMapleを使用する場合、デバッギング機能はいくつかのプラットフォーム上では別に表示されるウィンドウで提供されます。
|
|
|
例
|
|
>
|
f := proc(x,y) local a; global b;
if x < y then
a := x; b := y + a;
else
a := y; b := x + a;
end if;
a + b + x + y
end proc:
stopat(f);
|
f:
1* if x < y then
...
else
...
end if;
| |
[b]
f:
1* if x < y then
...
else
...
end if;
| |
f := proc(x, y)
local a;
global b;
1* if x < y then
2 a := x;
3 b := y+a
else
4 a := y;
5 b := x+a
end if;
6 ! a+b+x+y
end
| |
|
|
Download Help Document
Was this information helpful?