Maxima branch_5_47_base_7_g39559bd_dirty Manual: Source Level Debugging

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

### 38.1 Source Level Debugging

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

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

Maximaプロンプトで、 `:br`コマンドで ブレイクポイントが設定できます。 デバッガー内では、 ユーザーは、 `:n` (“next”)コマンドを使って１度に１行進むことができます。 `: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: Keyword Commands, Up: Debugging [Contents][Index]