Средства контроля и отладки процедур
Одним из основных средств отладки процедур является функция трассировки trace(name). Детальность ее работы задается системной переменной printlevel (уровень вывода). При printlevel: = n (значение n = 1 по умолчанию) выводится результат только непосредственно исполняемой функции или оператора. Для вывода информации о выполнении k-ro уровня вложенности надо использовать значение этой переменной от 5*k до 5*(k+i). Так, при п от 1 до 5 выводятся результаты трассировки первого уровня, при и от 6 до 10 – второго и т. д. Максимальное значение п = 100 обеспечивает трассировку по всем уровням вложенности процедуры name.
Следующий пример показывает осуществление трассировки для функции int(x^n,x):
Действие функции трассировки отменяется командой untrace:
При отладке алгоритмов выполнения вычислений надо тщательно следить за сообщениями об ошибках. Для этого в Maple предусмотрены функция traceerr и системная переменная lasterr, в которой сохраняется последнее сообщение об ошибке. При каждом обращении к tracerr переменная lasterr очищается:
> 2/0; Error, numeric exeption:division by zero > 2/4; 1/2 > 2/.3; 6.666666667 > lasterror: "division by zero" > traperror(3/4); 3/4 > lasterror; lasterror > traperror(5/0); Error, numeric exeption:division by zero > lasterror: "numeric exeption:division by zero"
Этот пример показывает, как может быть проведено отслеживание ошибок в ходе вычислений. Вообще говоря, пользователь системы Maple 7 редко привлекает описанные средства, поскольку проще отладить вычислительный алгоритм прежде, чем на его основе будет составлена процедура.
При правильном построении процедур ошибочные ситуации заведомо предусматриваются и должным образом обрабатываются.