Next: Специальные команды, Up: Отладка [Contents][Index]
Maxima имеет отладчик исходного кода. Пользователь может определить в функции точку останова и и продолжить выполнение с этой точки строка за строкой. При этом возможно анализировать стек вызовов и переменные, имеющие значение на данном уровне.
Команда :help
, или просто :h
, выводит список команд отладчика.
(Команды могут быть сокращены, если сокращение однозначно.
Если оно неоднозначно, то будет выведен список альтернатив.)
В отладчике пользователь может также использовать обычные команды Maxima
для исследования, определения и манипулирования переменными и выражениями.
Точка останова задается командой :br
в командной строке Maxima.
В отладчике, пользователь может продвигаться по одной строке
за раз с помощью команды :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 выводим обратную трассировку вызовов #0: foo(y=5)(foobar.mac line 1) #1: bar(x=2,y=3)(foobar.mac line 9) (dbm:1) :n <-- :n продвигаем выполнение на одну строку (foobar.mac 2) /tmp/foobar.mac:2:: (dbm:1) :n <-- :n продвигаем выполнение на одну строку (foobar.mac 3) /tmp/foobar.mac:3:: (dbm:1) u; <-- Исследуем знасение переменной u 28 (dbm:1) u: 33; <-- Устанавливаем значение u равным 33 33 (dbm:1) :r <-- :r to возобновляем выполнение программы (%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.el
,
расположенный в директории elisp.
Убедитесь, что файлы elisp установлены или добавьте директорию elisp программы Maxima
к пути: например, добавте следующие строки к файлу .emacs или файлу site-init.el
(setq load-path (cons "/usr/share/maxima/5.9.1/emacs" load-path)) (autoload 'dbl "dbl")
После этого при вводе
M-x dbl
в emacs должно открываться командное окно, в котором можно выполнять программы, например, Maxima, gcl, gdb и т.д. Это командное окно “знает” об отладке исходного кода, который открыт в другом окне редактора.
Пользователь может установить точку останова в определенной строке
кода, нажав на C-x space
. При этом производится анализ: в какой функции находится
данная строка и на какой по порядку строке этой функции стоит курсор.
Если курсор расположен, скажем, на строке 2 функции foo
, тогда
в командном окно будет введена команда “:br foo 2
”, которая
задает точку останова на второй строке функции foo
.
Для того, чтобы все это работало необходимо, чтобы в окне файла foobar.mac
был включен режим maxima-mode.el.
Существуют еще дополнительные команды, доступные в таком окне,
такие как вычисление функций Maxima при нажатии Alt-Control-x
.
Next: Специальные команды, Up: Отладка [Contents][Index]