exponenta event banner

Установка точек останова

Сведения о точках останова

Отладчик позволяет определить точки останова, называемые точками останова, при моделировании. Затем можно запустить моделирование из точки останова в точку останова с помощью отладчика continue команда. Отладчик позволяет определить два типа точек останова: безусловные и условные. Безусловная точка останова возникает всякий раз, когда моделирование достигает метода, указанного ранее. Условная точка останова возникает, когда в моделировании возникает условие, указанное заранее.

Точки останова полезны, если известно, что проблема возникает в определенный момент программы или когда возникает определенное условие. Путем определения соответствующей точки останова и выполнения моделирования с помощью continue можно сразу же перейти к точке моделирования, в которой возникает проблема.

Примечание

При остановке моделирования в точке останова функции MATLAB ® S в отладчике для выхода из MATLAB необходимо сначала выйти из отладчика.

Установка безусловных точек останова

Можно установить безусловные точки останова из:

  • Панель инструментов отладчика

  • Панель «Цикл моделирования»

  • Окно команд продукта MATLAB (только режим командной строки)

Установка точек останова на панели инструментов отладчика

Для включения кнопки Breakpoint,

  1. Моделирование модели.

  2. Нажмите кнопку Шаг над текущим методом до simulationPhase подсвечивается.

  3. Нажмите кнопку Шаг в текущий метод.

Отладчик отображает имя выбранного блока на панели «Точки разрыва/отображения» панели «Точки останова».

Примечание

Нажатие кнопки «Точка останова» на панели инструментов устанавливает точки останова при вызове методов блока в основные временные шаги.

Можно временно отключить точки останова в блоке, сняв флажок в столбце точек останова панели. Чтобы очистить точки останова блока и удалить его запись с панели,

  1. Выберите запись.

  2. Нажмите кнопку «Удалить выбранную точку» на панели.

Примечание

Невозможно задать точку останова для виртуального блока. Виртуальный блок является чисто графическим: он указывает на группировку или связь между вычислительными блоками модели. Отладчик предупреждает, если вы пытаетесь установить точку останова для виртуального блока. Можно получить список невиртуальных блоков модели, используя slist (см. раздел Отображение невиртуальных блоков модели).

Установка точек останова в области цикла моделирования

Чтобы задать точку останова для определенного вызова метода, отображаемого на панели Цикл моделирования (Simulation Loop), установите флажок рядом с именем метода в столбце точки останова панели.

Чтобы снять точку останова, снимите флажок.

Установка точек останова в окне команд

В режиме командной строки используйте break и bafter для установки точек останова до или после указанного метода соответственно. Используйте clear для очистки точек останова.

Установка условных точек останова

Можно использовать группу элементов управления Break on conditions на панели Breakpoints отладчика

или следующие команды (в режиме командной строки) для установки условных точек останова.

Эта команда...Остановка моделирования...
tbreak [t]

На этапе моделирования

ebreak

При восстанавливаемой ошибке в модели

nanbreak

При возникновении недолива или переполнения (NaN) или бесконечно (Inf) значение

xbreak

Когда моделирование достигает состояния, определяющего размер шага моделирования

zcbreak

Когда пересечение нуля происходит между шагами времени моделирования

Установка точек останова во время выполнения шагов

Чтобы установить точку останова на шаге времени, введите время в поле debugger Break at time (режим GUI) или введите время с помощью tbreak команда. Это приводит к тому, что отладчик останавливает моделирование в Outputs.Major способ модели на первом шаге времени, который следует за указанным временем. Например, запуск vdp в режиме отладки и ввода команд

tbreak 2
continue

вызывает остановку моделирования отладчиком в vdp.Outputs.Major способ временного шага 2.078 как указано на выходе continue команда.

%----------------------------------------------------------------%
[Tm = 2.034340153847549      ] vdp.Outputs.Minor
(sldebug @37): 

Разрыв на нефинитные значения

Выбор опции значений NaN отладчика или ввод nanbreak команда приводит к остановке моделирования, когда вычисленное значение является бесконечным или выходит за пределы диапазона значений, поддерживаемого машиной, выполняющей моделирование. Эта опция полезна для определения вычислительных ошибок в модели.

Разрыв шагов ограничения размера шага

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

Разрыв при нулевых пересечениях

Выбор опции Нулевые пересечения (Zero crossings) или ввод zcbreak команда приводит к остановке моделирования, когда в модели, включающей блоки, в которых могут возникнуть пересечения нуля, обнаруживается некамплярное пересечение нуля. После остановки отображается идентификатор, тип и имя блока, в котором было обнаружено пересечение нуля. Идентификатор блока (s:b:p) состоит из системного индекса s, индекс блока b, и индекс порта p разделяются двоеточиями (см. «Идентификатор блока»).

Например, установка разрыва нулевого пересечения в начале выполнения zeroxing пример модели,

>> sldebug zeroxing
%--------------------------------------------------------------
%
[TM = 0                      ] zeroxing.Simulate
(sldebug @0): >> zcbreak
Break at zero crossing events              : enabled

и продолжение моделирования

(sldebug @0): >> continue

приводит к перерыву нулевого пересечения при

Interrupting model execution before running mdlOutputs at the left post of 
(major time step just before) zero crossing event detected at the following location:
  6[-0]  0:5:2  Saturate  'zeroxing/Saturation'
%----------------------------------------------------------------%
[TzL= 0.3435011087932808     ] zeroxing.Outputs.Major
(sldebug @16): >> 

Если модель не включает блоки, способные создавать некамплярные пересечения нулей, команда распечатывает сообщение, информирующее об этом факте.

Разрыв ошибок решателя

Выбор опции Ошибки решателя отладчика или ввод ebreak приводит к остановке моделирования, если решатель обнаруживает в модели исправимую ошибку. Если эта точка останова не задана или не отключена, решатель восстанавливается после ошибки и продолжает моделирование без уведомления пользователя.

Связанные примеры

Подробнее