Отладка программы MATLAB

Чтобы отладить вашу программу MATLAB® графически, используйте Редактор/Отладчик. В качестве альтернативы можно использовать функции отладки в Командном окне. Оба метода являются взаимозаменяемыми.

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

  • Если вы петляете с несохраненными изменениями из Редактора, то файл автоматически сохранен, прежде чем это запустится.

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

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

Установите точки останова приостанавливать выполнение файла MATLAB, таким образом, можно исследовать значение или переменные, где вы думаете, что проблема могла быть. Можно установить точки останова с помощью Редактора, с помощью функций в Командном окне или обоих.

Существует три различных типов точек останова: стандарт, условное выражение и ошибка. Чтобы добавить стандартную точку останова в Редакторе, кликните по области точки останова в исполняемой линии, где вы хотите установить точку останова. breakpoint alley является узким столбцом на левой стороне Редактора, справа от номера строки. Также можно использовать ключ F12, чтобы установить точку останова.

Исполняемые линии обозначаются тире (—) в области точки останова. Например, кликните по области точки останова рядом с линией 2 в коде ниже, чтобы добавить точку останова в той линии.

Если исполняемый оператор охватывает несколько линий, можно установить точку останова в каждой линии в том операторе, даже при том, что дополнительные линии не имеют — (тире) в области точки останова. Например, в этом коде. можно установить точку останова во всех четырех линиях:

Для получения дополнительной информации о различных типах точек останова смотрите Установку точек останова.

Петлять

После установки точек останова петляйте из Командного окна или Редактора. Петляние приводит к этим результатам:

  • Кнопка Run превращается в кнопку Pause.

  • Подсказка в Командном окне превращается в K>> указание, что MATLAB находится в режиме отладки и что клавиатура сознает ситуацию.

  • MATLAB делает паузу в первой точке останова в программе. В Редакторе зеленая стрелка только справа от точки останова указывает на паузу. Программа не выполняет линию, где пауза происходит, пока это не продолжает запускаться. Например, здесь отладчик делает паузу, прежде чем программа выполняет x = ones(1,10);.

  • MATLAB отображает текущую рабочую область в Function Call Stack на вкладке Editor в разделе Debug.

    Если вы используете функции отладки от Командного окна, используйте dbstack просмотреть Стек вызовов функции.

Для получения дополнительной информации об использовании Стека вызовов функции смотрите, Выбирают Workspace

Приостановка рабочего файла

Чтобы приостановить осуществление программы, в то время как это запускается, перейдите к вкладке Editor и нажмите кнопку Pause. MATLAB приостанавливает выполнение в следующей исполняемой линии и изменения кнопки Pause в кнопке Continue. Чтобы продолжить выполнение, нажмите кнопку Continue.

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

Примечание

Нажатие на кнопку паузы может заставить MATLAB делать паузу в файле вне вашего собственного программного файла. Нажатие кнопки Continue возобновляет нормальное выполнение, не изменяя результаты файла.

Нахождение и решение проблемы

В то время как ваш код приостановлен, можно просмотреть или изменить значения переменных, или можно изменить код.

Просмотр или замена переменной в то время как отладка

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

Всплывающая подсказка остается в поле зрения, пока вы не перемещаете указатель. Если вы испытываете затруднения, заставляя всплывающую подсказку появиться, кликните по линии, содержащей переменную, и затем переместите указатель рядом с переменной. Для получения дополнительной информации смотрите, Исследуют Значения В то время как Отладка.

Можно изменить значение переменной при отладке, чтобы видеть, производит ли новое значение ожидаемые результаты. С приостановленной программой присвойте новое значение переменной в Командном окне, браузере Рабочей области или Редакторе Переменных. Затем продолжите запускаться или продвигаться через программу.

Например, здесь MATLAB приостановлен в for цикл, где n = 2:

  • Введите n = 7; в командной строке, чтобы изменить текущее значение n от 2 до 7.

  • Нажмите Continue, чтобы запустить следующую строку кода.

MATLAB запускает строку кода x(n) = 2 * x(n-1); с n = 7.

Изменение раздела кода в то время как отладка

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

Изменить программу при отладке:

  1. В то время как ваш код приостановлен, измените часть файла, который еще не запустился.

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

  2. Выберите весь код после линии, в которой приостановлен MATLAB, щелкните правой кнопкой, и затем выберите Evaluate Selection из контекстного меню.

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

Продвиньтесь через файл

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

Эта таблица описывает доступные действия отладки и различные методы, которые можно использовать, чтобы выполнить их.

Описание

Кнопка на панели инструментов

Функциональная альтернатива

Продолжите выполнение файла до линии, где курсор расположен. Также доступный в контекстном меню.

Run to Cursor

'none'

Выполните текущую линию файла.

Step

dbstep

Выполните текущую линию файла и, если линия является вызовом другой функции, шага в эту функцию.

Step In

dbstep in

Возобновите выполнение файла до завершения или пока с другой точкой останова не столкнутся.

Continue

dbcont

После вступания, остальная часть запуска вызванной функциональной или локальной функции, оставляют вызванную функцию и делают паузу.

Step Out

dbstep out

Приостановите режим отладки.

Pause

'none'

Выйдите из режима отладки.

Quit Debugging

dbquit

Окончание сеанса отладки

После того, как вы идентифицируете проблему, заканчиваете сеанс отладки путем движения во вкладку Editor и нажатия на Quit Debugging . Необходимо закончить сеанс отладки, если вы хотите изменить и сохранить файл, или если вы хотите запустить другие программы в MATLAB.

После того, как вы выйдете из отладки, сделаете паузу, индикаторы в отображении Редактора больше не появляются, и нормальный >> подсказка вновь появляется в Командном окне вместо K>>. Вы больше не можете получать доступ к стеку вызовов.

Если программное обеспечение MATLAB становится небыстро реагирующим, когда оно делает паузу в точке останова, нажмите Ctrl+c, чтобы возвратиться к посдказке MATLAB.

Похожие темы