Отладьте код MuPAD в режиме трассировки

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

MuPAD® обеспечивает две альтернативы для отладки вашего кода. Во-первых, можно использовать отладчик графический интерфейса пользователя MuPAD, чтобы отладить код в интерактивном режиме, наблюдая подписание кода шаг за шагом. Другая альтернатива должна сгенерировать отчет, показывающий шаги, которые были сделаны при выполнении кода. Режим, в котором MuPAD генерирует отчет при выполнении процедуры, области, метода или функциональной среды, называется режимом трассировки. Этот режим полезен для многоступенчатых процедур, которые требуют, чтобы долгое время выполнилось. Используйте этот подход, чтобы отладить конкретную процедуру, область, метод или функциональную среду, для которой вы хотите распечатать отчет.

При отладке также можно использовать print и fprint функции для печати промежуточных результатов производятся вашим кодом.

Предположим, вы хотите создать процедуру, которая вычисляет числа Лукаса. Числа Лукаса являются последовательностью целых чисел. Формула рекурсии, которая задает nth номер Лукаса похож на определение Чисел Фибоначчи:

Несмотря на то, что 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) возвращает nth номер Лукаса. Например, отобразите первые 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():
Для просмотра документации необходимо авторизоваться на сайте