exponenta event banner

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

Отладку программы MATLAB ® можно выполнить в интерактивном режиме в редакторе или с помощью функций отладки в окне команд. Оба метода взаимозаменяемы. Сведения об отладке программы в интерактивном редакторе или в редакторе в MATLAB Online™ см. в разделе Отладка кода в интерактивном редакторе.

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

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

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

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

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

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

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

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

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

Запустить файл

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

  • Кнопка Выполнить изменяется на кнопку Пауза.

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

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

  • MATLAB отображает текущее рабочее пространство в стеке вызовов функций на вкладке «Редактор» в разделе «Отладка».

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

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

Приостановить выполнение файла

Чтобы приостановить выполнение программы во время ее работы, перейдите на вкладку «Редактор» и нажмите кнопку «Приостановить». MATLAB приостанавливает выполнение в следующей исполняемой строке, а кнопка Pause переходит на кнопку Continue. Для продолжения выполнения нажмите кнопку «Продолжить».

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

Примечание

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

Поиск и устранение проблемы

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

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

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

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

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

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

  • Напечатать n = 7; в командной строке для изменения текущего значения n от 2 до 7.

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

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

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

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

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

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

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

  2. Выберите весь код после строки, в которой команда MATLAB приостановлена, щелкните правой кнопкой мыши и выберите в контекстном меню пункт «Вычислить выбор».

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

Пошаговый файл

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

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

Описание

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

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

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

Выполнить до курсора

Ничего

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

Шаг

dbstep

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

Шаг в

dbstep in

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

Продолжить

dbcont

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

Выйти

dbstep out

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

Пауза

Ничего

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

Выйти из отладки

dbquit

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

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

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

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

Связанные темы