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

Можно отлаживать MATLAB® программа интерактивно в редакторе или программно с использованием отладочных функций в Командном окне. Оба метода взаимозаменяемы. Для отладки программы в Live Editor или в редактор в MATLAB Online™, смотрите Debug Code в Live Editor.

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

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

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

Установите точку по оси Х

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

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

Исполняемые линии обозначаются штрихом (-) в переулке точек останова. Для примера щелкните областью точки останова рядом со строкой 2 в коде ниже, чтобы добавить точку останова на этой линии.

Если исполняемый оператор охватывает несколько линии, можно задать точку останова в каждой линии этого оператора, даже если дополнительные линии не имеют - (штрих) в области точки останова. Для примера в этом коде. можно задать точку останова для всей четырёх линий:

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

Запуск файла

После установки точек останова запустите файл из Командного окна или Редактора. Выполнение файла приводит к следующим результатам:

  • Кнопка Run изменяется на кнопку Pause.

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

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

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

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

Для получения дополнительной информации об использовании Стека вызовов функции см. Раздел «Выбор» Рабочей области

Пауза работающего файла

Чтобы приостановить выполнение программы во время ее выполнения, перейдите на вкладку 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

Ничего

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

Step

dbstep

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

Step In

dbstep in

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

Continue

dbcont

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

Step Out

dbstep out

Пауза режима отладки.

Pause

Ничего

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

Quit Debugging

dbquit

Завершение сеанса отладки

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

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

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

Похожие темы