Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
MuPAD® обеспечивает две альтернативы для отладки вашего кода. Во-первых, можно использовать отладчик графический интерфейса пользователя MuPAD, чтобы отладить код в интерактивном режиме, наблюдая подписание кода шаг за шагом. Другая альтернатива должна сгенерировать отчет, показывающий шаги, которые были сделаны при выполнении кода. Режим, в котором MuPAD генерирует отчет при выполнении процедуры, области, метода или функциональной среды, называется режимом трассировки. Этот режим полезен для многоступенчатых процедур, которые требуют, чтобы долгое время выполнилось. Используйте этот подход, чтобы отладить конкретную процедуру, область, метод или функциональную среду, для которой вы хотите распечатать отчет.
При отладке также можно использовать print
и fprint
функции для печати промежуточных результатов производятся вашим кодом.
Предположим, вы хотите создать процедуру, которая вычисляет числа Лукаса. Числа Лукаса являются последовательностью целых чисел. Формула рекурсии, которая задает n
th номер Лукаса похож на определение Чисел Фибоначчи:
Несмотря на то, что MuPAD не обеспечивает функцию, которая вычисляет числа Лукаса, пишущий, что ваша собственная процедура для этой задачи легка:
lucas:= proc(n:Type::PosInt) begin if n = 1 then 1 elif n = 2 then 3 else lucas(n - 1) + lucas(n - 2) end_if end_proc:
Вызов процедуры lucas(n)
возвращает n
th номер Лукаса. Например, отобразите первые 10 чисел Лукаса:
lucas(n) $ n = 1..10
Предположим, что вы хотите проследить эту процедуру. Чтобы переключить осуществление конкретной процедуры, области, метод или функциональная среда к режиму трассировки, использует prog::trace
функция. Например, чтобы проследить lucas
процедура, введите:
prog::trace(lucas):
Теперь, если вы вызываете lucas
процедура, механизм трассировки наблюдает каждый шаг вызова процедуры и генерирует отчет для того вызова:
lucas(5)
enter lucas(5) enter lucas(4) enter lucas(3) enter lucas(2) computed 3 enter lucas(1) computed 1 computed 4 enter lucas(2) computed 3 computed 7 enter lucas(3) enter lucas(2) computed 3 enter lucas(1) computed 1 computed 4 computed 11
prog::traced()
вызов функции возвращает имена всех в настоящее время прослеженных процедур, областей, методов и функциональных сред:
prog::traced()
При помощи различных вариантов prog::trace
функция, можно настроить сгенерированные отчеты. Большинство этих опций независимо от конкретного вызова процедуры. Они влияют на все отчеты, сгенерированные после того, как вы будете использовать опцию. Смотрите prog::trace
страница справки для получения дополнительной информации.
Если процедура использует много вложенных вызовов процедуры, сгенерированный отчет для той процедуры может быть очень длинным. Чтобы ограничить количество вложенных вызовов процедуры в отчете, используйте Depth
опция prog::trace
:
prog::trace(Depth = 2):
lucas(5)
enter lucas(5) enter lucas(4) computed 7 enter lucas(3) computed 4 computed 11
Depth
опция влияет на все отчеты, сгенерированные для дальнейших вызовов процедур, областей, методов и функциональных сред. Если вы не хотите использовать эту опцию в дальнейших вызовах, установите ее значение к 0. Значение 0 указывает на тот prog::trace
должен отобразить все вложенные вызовы:
prog::trace(Depth = 0):
Чтобы отобразить использование памяти на каждом шаге вызова процедуры, используйте Mem
опция:
prog::trace(Mem):
lucas(5)
enter lucas(5) [mem: 5636064] enter lucas(4) [mem: 5636544] enter lucas(3) [mem: 5636944] enter lucas(2) [mem: 5637344] computed 3 [mem: 5637060] enter lucas(1) [mem: 5637424] computed 1 [mem: 5637140] computed 4 [mem: 5636756] enter lucas(2) [mem: 5637120] computed 3 [mem: 5636836] computed 7 [mem: 5636356] enter lucas(3) [mem: 5636720] enter lucas(2) [mem: 5637120] computed 3 [mem: 5636836] enter lucas(1) [mem: 5637200] computed 1 [mem: 5636916] computed 4 [mem: 5636532] computed 11 [mem: 5636052]
Прекратить использовать Mem
опция для дальнейших вызовов, установленных ее значение к FALSE
:
prog::trace(Mem = FALSE):
Прекратить прослеживать вызовы lucas
процедура, используйте prog::untrace
функция:
prog::untrace():