exponenta event banner

Отладка кода в интерактивном редакторе

Чтобы диагностировать проблемы в интерактивных сценариях или функциях, выполните отладку кода в интерактивном редакторе. Существует несколько способов отладки в редакторе Live Editor:

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

  • Выполните запуск в определенной строке кода и приостановите выполнение с помощью кнопки «Выполнить здесь».

  • Переходите к функциям и сценариям при приостановке с помощью кнопки «Шаг».

  • Добавьте точки останова в файл, чтобы включить паузу в определенных строках при запуске.

В MATLAB ® Online™ отладка в редакторе соответствует поведению Live Editor. Дополнительные сведения об отладке в редакторе в установленной версии MATLAB см. в разделе Отладка программы MATLAB.

Показать выходные данные

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

Например, предположим, что у вас есть сценарий под названием plotRand.mlx строит вектор случайных данных и строит горизонтальную линию на графике в среднем.

Отображение выходных данных rand в строке 2 удалите точку с запятой в конце строки. Чтобы отобразить номера строк в интерактивном редакторе, если они не видны, перейдите на вкладку «Вид» и нажмите кнопку «Номера строк». MATLAB отображает значение r.

Отладка с помощью запуска в

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

Чтобы перейти к определенной строке кода, а затем приостановить выполнение, нажмите кнопку run to here слева от строки. Если выбранная строка не может быть достигнута, MATLAB продолжает работать до тех пор, пока не будет достигнут конец файла или не будет обнаружена точка останова. Кнопка run to here доступна только в интерактивных функциях при отладке.

Например, нажмите кнопку слева от строки 2 в plotRand.mlx. Выполнение MATLAB plotRand.mlx начиная с строки 1 и останавливается перед текущей строкой 2.

Когда MATLAB приостанавливается, кнопка Run на вкладке Live Editor изменяется на кнопку Continue. Интерактивный редактор показывает строку, в которой команда MATLAB приостановлена, выделяя ее зеленым цветом. Выделенная строка запускается только после возобновления работы MATLAB.

Совет

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

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

Чтобы продолжить пошаговое выполнение кода, на вкладке «Интерактивный редактор» нажмите кнопку «Шаг ». MATLAB выполняет текущую строку, в которой она приостановлена, и паузы в следующей строке.

Можно также перейти к строке с курсором, перейдя на вкладку Live Editor, выбрав Step и затем Run to Cursor.

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

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

Можно также просмотреть значение переменной, введя имя переменной в окне команд. Например, чтобы увидеть значение переменной n, тип n и нажмите Enter. В окне команд отображается имя переменной и ее значение. Чтобы просмотреть все переменные в текущей рабочей области, используйте браузер рабочей области.

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

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

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

Примечание

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

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

После выявления проблемы завершите сеанс отладки, перейдя на вкладку Live Editor и нажав кнопку Stop. Чтобы избежать путаницы, обязательно завершайте сеанс отладки каждый раз при завершении отладки. Интерактивный редактор автоматически завершает сеанс отладки при сохранении.

Переход к функциям

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

По умолчанию кнопка отображается только для пользовательских функций и сценариев. Чтобы также отобразить кнопку для функций MathWorks ®, на вкладке Главная (Home) в разделе Среда (Environment) щелкните Настройки (Preferences). Затем выберите MATLAB > Редактор/Отладчик и в разделе Отладка в интерактивном редакторе снимите флажок Показывать только шаг в для пользовательских функций.

После перехода нажмите кнопку в верхней части файла для запуска остальной части вызываемой функции, оставьте вызываемую функцию и приостановите выполнение. Для выхода из функции можно также использовать клавиши Shift + F11.

Можно также перейти к функциям и выйти из них, перейдя на вкладку Live Editor, выбрав Step, а затем Step In или Step Out . Эти кнопки не соответствуют настройкам кнопки Только показать шаг в для пользовательских функций и всегда входят и выходят из пользовательских функций и функций MathWorks.

Анализ переменных в рабочей области

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

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

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

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

Добавление точек останова и выполнение

Если в файле есть строки кода, которые необходимо приостановить при каждом запуске, добавьте точки останова в этих строках. Чтобы добавить точку останова в Live Editor, щелкните серую область слева на исполняемой строке, в которой требуется задать точку останова. Например, щелкните область рядом со строкой 3 в этом коде, чтобы добавить точку останова в этой строке. Для установки точки останова можно также использовать клавишу F12.

При запуске файла MATLAB останавливается в строке кода, указанной точкой останова.

Очистить точки останова

При закрытии и повторном открытии файла точки останова сохраняются.

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

Чтобы очистить все точки останова в файле, выберите Очистить все в файле. Чтобы очистить все точки останова во всех файлах, выберите Очистить все.

Точки останова очищаются автоматически при завершении сеанса MATLAB.

Отключить точки останова

Выбранные точки останова можно отключить, чтобы программа временно игнорировала их и работала непрерывно. Например, можно отключить точку останова после выявления и устранения проблемы.

Чтобы отключить точку останова, щелкните ее правой кнопкой мыши и выберите в контекстном меню пункт «Отключить точку останова». Точка останова становится серой, указывая, что она отключена.

Чтобы снова включить точку останова, щелкните ее правой кнопкой мыши и выберите Включить точку останова. Чтобы включить или отключить все точки останова в файле, выберите Включить все точки останова в файле или Отключить все точки останова в файле. Эти параметры доступны только при наличии хотя бы одной точки останова для включения или отключения.

Добавить условные точки останова

В точку останова можно добавить условие, указывающее MATLAB, когда следует сделать паузу в указанной строке. Чтобы добавить условие, щелкните правой кнопкой мыши точку останова и выберите Set/Modify Condition. Когда откроется диалоговое окно Редактор (Editor), введите условие и нажмите кнопку ОК. Условием является любое допустимое выражение MATLAB, которое возвращает логическое скалярное значение. MATLAB оценивает условие перед запуском строки.

Например, предположим, что нужно сделать паузу только в plotRand.mlx если случайные сгенерированные данные содержат 0.

Добавьте точку останова со следующим условием в строке 3:

any(r == 0)
В этой строке появляется желтая условная точка останова.

При запуске файла MATLAB приостанавливается в указанной строке при выполнении условия. Например, в plotRand например, MATLAB приостанавливается перед выполнением строки 3, если какое-либо из значений в r равны 0.

Добавление точек останова в анонимные функции

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

Чтобы добавить точку останова, щелкните серую область слева на исполняемой строке, чтобы добавить точку останова для строки. MATLAB добавляет точку останова для строки и отключенную точку останова для каждой анонимной функции в строке. Чтобы включить точку останова для анонимной функции, щелкните ее правой кнопкой мыши и выберите Включить точку останова.

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

При установке точки останова в анонимной функции MATLAB приостанавливается при вызове анонимной функции. Зеленым цветом выделена строка, в которой код определяет анонимную функцию. Строка, выделенная серым цветом, означает, что код вызывает анонимные функции. Например, в этом коде MATLAB приостанавливает программу в точке останова, установленной для анонимной функции g, определенный в строке 5 и вызываемый в строке 6.

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