Next: , Up: Debugging   [Contents][Index]

38.1 Source Level Debugging

Maximaは、組み込みのソースレベルデバッガを持っています。 ユーザーは、関数にブレイクポイントを設定でき、 そこから行毎に実行することができます。 そのレベルでバインドされた変数と一緒にコールスタックを検査することができます。

コマンド:helpまたは:hは、 デバッガーコマンドのリストを示します。 (一般的に、 もし略字がただ1つなら、コマンドは略せます。 もしただ1つでないなら、選択肢がリストされます。) デバッガー内では、 変数と式を検査し、定義し、操作するために、ユーザーは任意の通常のMaxima関数も使うことができます。

Maximaプロンプトで、 :brコマンドで ブレイクポイントが設定できます。 デバッガー内では、 ユーザーは、 :n (“next”)コマンドを使って1度に1行進むことができます。 :bt (“backtrace”)コマンドは、スタックフレームのリストを示します。 :r (“resume”)コマンドは、デバッガーから抜けて、実行を続けます。 以下の例で、これらのコマンドを例示します。

(%i1) load ("/tmp/foobar.mac");

(%o1)                           /tmp/foobar.mac

(%i2) :br foo
Turning on debugging debugmode(true)
Bkpt 0 for foo (in /tmp/foobar.mac line 1) 

(%i2) bar (2,3);
Bkpt 0:(foobar.mac 1)
/tmp/foobar.mac:1::

(dbm:1) :bt                        <-- :bt typed here gives a backtrace
#0: foo(y=5)(foobar.mac line 1)
#1: bar(x=2,y=3)(foobar.mac line 9)

(dbm:1) :n                         <-- Here type :n to advance line
(foobar.mac 2)
/tmp/foobar.mac:2::

(dbm:1) :n                         <-- Here type :n to advance line
(foobar.mac 3)
/tmp/foobar.mac:3::

(dbm:1) u;                         <-- Investigate value of u
28

(dbm:1) u: 33;                     <-- Change u to be 33
33

(dbm:1) :r                         <-- Type :r to resume the computation

(%o2)                                1094

ファイル/tmp/foobar.macは以下の通りです:

foo(y) := block ([u:y^2],
  u: u+3,
  u: u^2,
  u);
 
bar(x,y) := (
  x: x+2,
  y: y+2,
  x: foo(y),
  x+y);

EMACSを通してのデバッガーの使用

もしユーザーがシェルウィンドウ(dblシェル)で、GNU emacsの下でコードを走らせているか、 グラフィカルならインターフェイスバージョンXmaximaを走らせているなら、 もしブレイクポイントで停止させたら、 ウィンドウの他の半面に表示されるソースファイルの中に、 赤でハイライトされたか、右行を示す小さな矢印で 現在位置を見るでしょう。 M-n (Alt-n)をタイプすることで、一度に一行進めることができます。

Emacsの下では、 dblシェルの中で走らせなければいけません。 dblシェルは、elispディレクトリの中に dbl.elファイルを要求します。 elispファイルをインストールしたか、Maxima elispディレクトリをパスに足したかを確認してください: 例えば、以下を .emacsファイルかsite-init.elに足してください。

(setq load-path (cons "/usr/share/maxima/5.9.1/emacs" load-path))
(autoload 'dbl "dbl")

すると、emacsの中で、

M-x dbl

は、例えば、Maxima, gcl, gbbなどのプログラムを走らせることができるシェルウィンドウを開始するでしょう。 このシェルウィンドウはソースレベルデバッグや 他のウィンドウのソースコードの表示についても知っています。

ユーザーは、 C-x spaceをタイプすることで ファイルのある行に ブレイクポイントを設定できます。 これは、カーソルがどの関数の中かがわかり、 カーソルが示すその関数のどの行かわかります。 もしカーソルが、例えば、fooの行2なら、 fooを二番目の行でブレイクするために、 他のウィンドウの中で、コマンド“:br foo 2”を挿入します。 これをイネーブルにするには、 ユーザーは ファイルfoobar.macが訪れるウィンドウの中で maxima-mode.elを機能させなければいけません。 Alt-Control-xをタイプすることで 関数をMaximaに評価ような、 そのファイルウィンドウで利用可能な追加のコマンドがあります。

Debugging ·

Next: , Up: Debugging   [Contents][Index]