Чтобы диагностировать проблемы в live скриптах или функциях, отлаживайте код в Live Editor. В Live Editor можно отлаживать несколько способов:
Показать вывод путем удаления точек с запятой.
Перейдите к определенной строке кода и остановитесь с помощью кнопки Run to Here.
Переходите к функциям и скриптам во время паузы с помощью кнопки Step In.
Добавьте точки по оси Х к файлу, чтобы включить паузу в определенных линиях при запуске.
В MATLAB® Online™ отладка в редакторе соответствует поведению Live Editor. Дополнительные сведения об отладке в редакторе в установленной версии MATLAB см. в разделе Отладка программы MATLAB.
Простой способ определить, где проблема возникает в вашем live скрипте или функции, - показать выход. Чтобы отобразить выход для линии, удалите точка с запятой из конца этой строки. Live Editor отображает каждый выход со строкой кода, которая создает его, что облегчает определение места возникновения проблемы.
Например, предположим, что у вас есть скрипт, называемый plotRand.mlx
который строит график вектора случайных данных и рисует горизонтальную линию на графике в среднем.
Чтобы отобразить выходы rand
функция в линии 2, удалите точку с запятой в конце линии. Чтобы отобразить номера линий в Live Editor, если они не видны, перейдите на вкладку View и нажмите
кнопку Line Numbers. MATLAB отображает значение r.
Отображение выхода полезно, если вы хотите отобразить состояние одной переменной. Чтобы исследовать состояние всех переменных в рабочей области, запустите live скрипт, а затем приостановите перед запуском указанной строки кода.
Чтобы запустить указанную строку кода и затем приостановить, нажмите кнопку run to here слева от линии. Если не удается достичь выбранной линии, MATLAB продолжает выполняться до тех пор, пока не будет достигнут конец файла или не будет обнаружена точка останова. Кнопка run to here доступна только в live функциях при отладке.
Например, нажмите кнопку слева от линии 2 plotRand.mlx
. MATLAB запускает plotRand.mlx
начиная с линии 1 и останавливаясь перед выполнением линии 2.
Когда MATLAB останавливается, кнопка Run на вкладке Live Editor изменяется на кнопку Continue. Live Editor указывает линию, в которой MATLAB приостановлен, выделяя линией зеленым цветом. Подсвеченная линия выполняется только после возобновления работы MATLAB.
Совет
Рекомендуется избегать изменения файла во время паузы MATLAB. Изменения, внесенные во время паузы MATLAB, выполняются только после завершения выполнения кода MATLAB и повторного запуска кода.
Чтобы продолжить выполнение кода, нажмите кнопку Continue. MATLAB продолжает выполнение файла до тех пор, пока он не достигнет конца файла или точки останова. Вы также можете нажать кнопку слева от строки кода, в которую вы хотите продолжить выполнение.
Чтобы продолжить выполнение кода по строке, на вкладке Live Editor, нажмите Step. MATLAB выполняет текущую линию, в которой она приостановлена, и паузы в следующей линии.
Вы также можете подбежать к линии с помощью курсора, перейдя на вкладку Live Editor, выбрав Step и затем выбрав Run to Cursor.
Чтобы просмотреть значение переменной во время паузы MATLAB, наведите указатель мыши на переменную. Текущее значение переменной появляется в всплывающей подсказке. Это всплывающая подсказка остается в поле зрения до тех пор, пока вы не переместите указатель мыши. Чтобы отключить всплывающие подсказки, перейдите на вкладку View и нажмите кнопку Datatips.
Вы также можете просмотреть значение переменной, введя имя переменной в Командном окне. Для примера, чтобы увидеть значение переменной n
, тип n
и нажмите Enter. В Командном окне отображается имя переменной и ее значение. Чтобы просмотреть все переменные в текущей рабочей области, используйте браузер Рабочей области.
Чтобы приостановить программу во время ее работы, перейдите на вкладку Live Editor и нажмите кнопку Pause. MATLAB останавливается в следующей исполняемой линии, и кнопка Pause изменяется на кнопку Continue. Для продолжения работы нажмите кнопку Continue.
Пауза полезна, если необходимо проверить прогресс выполнения долгой программы, чтобы убедиться, что она работает должным образом.
Примечание
Нажатие кнопки паузы может привести к паузе MATLAB в файле вне вашего собственного программного файла. Нажатие кнопки Continue возобновляет работу, не меняя результатов файла.
После идентификации проблемы завершите сеанс отладки, перейдя на вкладку Live Editor и нажав Stop. Чтобы избежать путаницы, обязательно завершайте сеанс отладки каждый раз, когда вы завершаете отладку. Live Editor автоматически завершает сеанс отладки при сохранении.
Во время отладки можно шагнуть в вызываемые файлы, приостановив в точках, где вы хотите изучить значения. Чтобы перейти в файл, нажмите кнопку непосредственно слева от функции, в которую вы хотите войти. Можно также использовать клавишу F11 для шага в функцию. Live Editor отображает кнопку только в том случае, если линия содержит вызов другой функции.
По умолчанию кнопка отображает только пользовательские функции и скрипты. Чтобы показать кнопку для MathWorks® также функционирует, на вкладке Home, в разделе Environment, нажмите Preferences. Затем выберите MATLAB > Editor/Debugger, а в Debugging in the Live Editor разделе очистите Only show Step in button for user-defined functions.
После шага нажмите кнопку в верхней части файла, чтобы запустить остальную часть вызываемой функции, оставить вызываемую функцию, а затем приостановить. Можно также использовать Shift+F11, чтобы выйти из функции.
Можно также войти и выйти из функций, перейдя на вкладку Live Editor, выбрав Step и затем выбрав Step In или Step Out . Эти кнопки не выполняют Only show Step in button for user-defined functions выбора и всегда входят и выходят как из определяемых пользователем, так и из функций MathWorks.
Когда вы переходите в вызываемую функцию или файл, Live Editor отображает список функций MATLAB, выполненных перед паузой в текущей линии. Список показан в верхней части файла и отображает функции в порядке, начиная слева с первого называемого скрипта или функции и заканчивая справа текущим скриптом или функцией, в которой MATLAB приостановлен. Этот список называется function call stack.
Для каждой функции в стек вызовов функции существует соответствующая рабочая область. Рабочие области содержат переменные, которые вы создаете в MATLAB или импортируете из файлов данных или других программ. Переменные, которые вы присваиваете через Командное окно или создаете с помощью скриптов, относятся к базовому рабочему пространству. Переменные, которые вы создаете в функции, принадлежат их собственной рабочей области функции.
Чтобы изучить переменную во время отладки, необходимо сначала выбрать ее рабочую область. Выбранная функция в стеке вызовов функции указывает на текущую рабочую область. Чтобы выбрать или изменить рабочую область, щелкните функцию в стек вызовов функции. MATLAB открывает функцию в Live Editor и меняет текущую рабочую область на рабочую область функции.
После выбора рабочей области можно просмотреть значения переменных в ней с помощью браузера Рабочей области или как всплывающая подсказка в Live Editor.
Если в файле есть строки кода, которые вы хотите приостановить при каждом запуске, добавьте точки останова в эти линии. Чтобы добавить точку останова в Live Editor, щелкните серую область слева на исполняемой линии, где необходимо задать точку останова. Например, щелкните по области рядом с строкой 3 в этом коде, чтобы добавить точку останова в этой линии. Можно также использовать клавишу F12 для установки точки останова.
Когда вы запускаете файл, MATLAB останавливается в строке кода, обозначенной точкой останова.
При закрытии и повторном открытии файла сохраняются точки останова.
Чтобы удалить точку останова, щелкните правой кнопкой мыши точку останова и выберите Clear Breakpoint из контекстного меню. Можно также использовать клавишу F12 для удаления точки останова.
Чтобы удалить все точки останова в файле, выберите Clear All in File. Чтобы удалить все точки останова во всех файлах, выберите Clear All.
Точки останова автоматически очищаются, когда вы заканчиваете Сеанс работы с MATLAB.
Можно отключить выбранные точки останова, чтобы программа временно игнорировала их и выполнялась постоянно. Для примера можно отключить точку останова после того, как вы идентифицируете и исправляете проблему.
Чтобы отключить точку останова, щелкните ее правой кнопкой мыши и выберите Disable Breakpoint из контекстного меню. Точка останова становится серой, чтобы указать, что она отключена.
Чтобы снова включить точку останова, щелкните ее правой кнопкой мыши и выберите Enable Breakpoint. Чтобы включить или отключить все точки останова в файле, выберите Enable All Breakpoints in File или Disable All Breakpoints in File. Эти опции доступны, только если существует по крайней мере одна точка останова, которая должна быть включена или отключена.
Можно добавить условие к точке останова, которая сообщает MATLAB, когда следует сделать паузу в указанной линии. Чтобы добавить условие, щелкните правой кнопкой мыши точку останова и выберите Set/Modify Condition
. Когда откроется диалоговое окно Editor, введите условие и нажмите OK. Условием является любое допустимое выражение MATLAB, которое возвращает логическое скалярное значение. MATLAB оценивает условие перед запуском линии.
Например, предположим, что вы хотите только сделать паузу в plotRand.mlx
если случайные сгенерированные данные содержат 0
.
Добавьте точку останова со следующим условием в линии 3:
any(r == 0)
Когда вы запускаете файл, MATLAB останавливается в указанной линии, когда условие удовлетворено. Для примера, в plotRand
например, MATLAB останавливается перед выполнением линии 3, если любое из значений в r
равны 0
.
Можно добавить несколько точек по оси Х в линию кода MATLAB, которая содержит анонимные функции. Можно задать точку останова для самой линии и для каждой анонимной функции в строке.
Чтобы добавить точку прерывания, щелкните серую область слева на исполняемой строке, чтобы добавить точку прерывания для линии. MATLAB добавляет точку останова для линии и отключенную точку останова для каждой анонимной функции в строке. Чтобы включить точку останова для анонимной функции, щелкните ее правой кнопкой мыши и выберите Enable Breakpoint.
Чтобы просмотреть информацию обо всех точках останова на линии, наведите указатель мыши на значок точки останова. Появится всплывающая подсказка с доступной информацией. Например, в этом коде линия 5 содержит две анонимные функции с точкой останова в каждой из них.
Когда вы устанавливаете точку останова в анонимной функции, MATLAB останавливается, когда вызывается анонимная функция. Зеленым цветом подсвечивается линия, где код задает анонимную функцию. Серым цветом подсвечивается линия, где код вызывает анонимные функции. Например, в этом коде MATLAB останавливает программу в наборе точек останова для анонимной функции g
, заданный в линии 5 и вызываемый в линии 6.