Начиная с R2021b. Отладка замен программа MATLAB (R2021a) и код отладки в Live Editor (R2021a).
Можно диагностировать проблемы в MATLAB® файлы кода путем отладки кода в интерактивном режиме в Редакторе и Live Editor или программно при помощи функций отладки в Командном окне.
Существует несколько способов отладить ваш код:
Отображаемый вывод путем удаления точек с запятой.
Запустите код к определенной линии и сделайте паузу путем нажатия кнопки Run to Here.
Продвиньтесь в функции и скрипты, в то время как приостановлено путем нажатия кнопки Step In.
Добавьте точки останова в свой файл, чтобы позволить делать паузу в определенных линиях, когда вы запустите свой код.
Прежде чем вы начнете отлаживать, избегать неожиданных результатов, сохраните свои файлы кода и убедитесь, что файлы кода и любые файлы, которые они вызывают, существуют на пути поиска файлов или в текущей папке. MATLAB обрабатывает несохраненные изменения по-другому в зависимости от того, откуда вы отлаживаете:
Редактор — Если файл содержит несохраненные изменения, MATLAB, сохранил файл прежде, чем запустить его.
Live Editor — MATLAB запускает все изменения в файле, сохранены ли они или нет.
Командное окно — Если файл содержит несохраненные изменения, MATLAB, запускает сохраненную версию файла. Вы не видите результаты своих изменений.
Один способ определить, где проблема происходит в вашем файле кода MATLAB, состоит в том, чтобы отобразить вывод. Чтобы отобразить вывод для линии, удалите точку с запятой из конца той линии. В Редакторе MATLAB отображает вывод в Командном окне. В Live Editor MATLAB отображает вывод со строкой кода, которая создает его.
Например, предположите, что у вас есть скрипт под названием plotRand.m
это строит вектор из случайных данных и проводит горизонтальную линию на графике в среднем значении.
n = 50; r = rand(n,1); plot(r) m = mean(r); hold on plot([0,n],[m,m]) hold off title('Mean of Random Uniform Data')
Отображать вывод rand
функция в линии два, удалите точку с запятой в конце линии. MATLAB отображает значение r
в Командном окне.
В Live Editor MATLAB отображает значение r
с линией два.
Если вы хотите отобразить состояние одной переменной, отображение вывода полезно. Чтобы исследовать состояние всех переменных в рабочей области, запустите свой файл кода, и затем сделайте паузу прежде, чем запустить заданную строку кода.
Чтобы запустить код к заданной линии, и затем сделать паузу, нажимают кнопку Run to Here слева от линии. Если выбранная линия не может быть достигнута, MATLAB продолжает запускаться, пока конец файла не достигнут, или с точкой останова сталкиваются.
Примечание
В функциях и классах, кнопка Run to Here доступна только при отладке.
Например, нажмите кнопку Run to Here слева от линии два в plotRand.m
. MATLAB запускает plotRand.m
запуск в линии один и делает паузу перед рабочей линией два.
Когда MATLAB делает паузу, несколько изменений происходят:
Кнопка Run во вкладке Editor или Live Editor превращается в кнопку Continue.
Подсказка в Командном окне превращается в K>>
указание, что MATLAB находится в режиме отладки и что клавиатура сознает ситуацию.
MATLAB указывает на линию, в которой он приостановлен при помощи зеленой стрелы и зеленого выделения.
Совет
Это - хорошая практика, чтобы не изменять файл, в то время как MATLAB приостановлен. Изменения, которые внесены, в то время как MATLAB приостановлен, не запускаются, пока MATLAB не закончил запускать код, и код повторно выполняется.
Линия, в которой приостановлен MATLAB, не запускается, пока вы не продолжаете запускать код. Чтобы продолжить запускать код, нажмите кнопку Continue. MATLAB продолжает петлять, пока он не достигает конца файла или точки останова. Также можно нажать кнопку слева от строки кода, к которой вы хотите продолжить запускаться.
Чтобы продолжить запускать код линию за линией, на вкладке Editor или Live Editor, нажимают Step. MATLAB выполняет текущую линию, в которой он приостановлен и паузы в следующей строке.
Чтобы просмотреть значение переменной, в то время как MATLAB приостановлен, установите свой курсор на переменную. Текущее значение переменной появляется во всплывающей подсказке. Всплывающая подсказка остается в поле зрения, пока вы не перемещаете курсор. Чтобы отключить всплывающие подсказки, перейдите к вкладке View и нажмите кнопку Datatips прочь.
Также можно просмотреть значение переменной путем введения имени переменной в Командном окне. Например, чтобы видеть значение переменной n
, введите n
и нажмите Enter. Командное окно отображает имя переменной и его значение. Чтобы просмотреть все переменные в текущей рабочей области, используйте браузер Рабочей области.
Для получения дополнительной информации смотрите, Исследуют Значения В то время как Отладка.
Можно приостановить длительный код, в то время как он запускается, чтобы проверить прогресс и гарантировать, что он запускается как ожидалось. Чтобы приостановить под управлением код, перейдите к вкладке Editor или Live Editor и нажмите кнопку Pause. MATLAB делает паузу в следующей исполняемой линии и изменениях кнопки Pause в кнопке Continue. Чтобы продолжить запускать код, нажмите кнопку Continue.
Примечание
Нажатие кнопки Pause может заставить MATLAB делать паузу в файле вне вашего собственного кода.
При отладке можно продвинуться в названные файлы, делающие паузу в точках, где вы хотите исследовать значения. Чтобы продвинуться в файл, нажмите кнопку Step In непосредственно слева от функции, в которую вы хотите продвинуться. MATLAB отображает кнопку, только если линия содержит вызов другой функции. После вступания нажмите кнопку Step Out наверху файла, чтобы запустить остальную часть вызванной функции, оставить вызванную функцию, и затем сделать паузу.
По умолчанию кнопка Step In доступна только для пользовательских функций и скриптов. Сделать кнопку активной для MathWorks® функции, на вкладке Home, в разделе Environment, нажимают Preferences. Затем выберите MATLAB> Editor/Debugger, и в разделе Debugging, очистите опцию Only show contextual Step in button for user-defined functions.
В качестве альтернативы можно вступить и из функций при отладке при помощи кнопок Step In или Step Out на вкладке Editor или Live Editor. Эти кнопки не соблюдают настройку Only show contextual Step in button for user-defined functions и всегда вступают и из функций MathWorks и пользовательского.
Когда вы продвигаетесь в вызванную функцию или файл, MATLAB отображает список функций, которые это выполнило прежде, чем сделать паузу в текущей линии. Список, также названный function call stack, показывают наверху файла и отображает функции в порядке, начиная слева с первого названного скрипта или функции, и заканчиваясь справа текущим скриптом или функцией, в которой приостановлен MATLAB.
Для каждой функции в стеке вызовов функции существует соответствующая рабочая область. Рабочие области содержат переменные, которые вы создаете в MATLAB или импортируете из файлов данных или других программ. Переменные, которые вы присваиваете через Командное окно или создаете при помощи скриптов, принадлежат базовому рабочему пространству. Переменные, которые вы создаете в функции, принадлежат своей собственной функциональной рабочей области.
Можно исследовать значения переменных за пределами текущей рабочей области путем выбора различной рабочей области. Для получения дополнительной информации смотрите, Исследуют Значения В то время как Отладка.
Если существуют строки кода в вашем файле, который вы хотите приостановить в каждый раз, когда вы запускаете свой код, добавляете точки останова в тех линиях. Можно добавить точки останова в интерактивном режиме при помощи Редактора и Live Editor, программно при помощи функций в Командном окне или обоих.
Существует три типа точек останова: стандарт, условное выражение и ошибка. Чтобы добавить стандартную точку останова в Редакторе или Live Editor, кликните по серой области слева от исполняемой линии, где вы хотите установить точку останова. Например, кликните по области рядом с линией три в plotRand.m
добавить точку останова в той линии.
Когда вы петляете, MATLAB делает паузу в строке кода, обозначенной точкой останова. Линия, в которой приостановлен MATLAB, не запускается, пока вы не продолжаете запускать свой код.
Например, с plotRand.m
файл, открытый в Редакторе, нажмите
кнопку Run во вкладке Editor. MATLAB запускает plotRand.m
запуск в линии один и делает паузу перед рабочей линией три.
Когда MATLAB делает паузу, несколько изменений происходят:
Кнопка Run во вкладке Editor или Live Editor превращается в кнопку Continue.
Подсказка в Командном окне превращается в K>>
указание, что MATLAB находится в режиме отладки и что клавиатура сознает ситуацию.
MATLAB указывает на линию, в которой он приостановлен при помощи зеленой стрелы и зеленого выделения.
Совет
Это - хорошая практика, чтобы не изменять файл, в то время как MATLAB приостановлен. Изменения, которые внесены, в то время как MATLAB приостановлен, не запускаются, пока MATLAB не закончил запускать код, и код повторно выполняется.
Чтобы продолжить запускать код, нажмите кнопку Continue. MATLAB продолжает петлять, пока он не достигает конца файла или точки останова. Чтобы продолжить запускать код линию за линией, на вкладке Editor или Live Editor, нажимают Step. MATLAB выполняет текущую линию, в которой он приостановлен, и затем делает паузу в следующей строке.
Для получения дополнительной информации о различных типах точек останова и как установить, очиститесь, и отключил их, смотрите Установку точек останова.
После того, как вы идентифицируете, что проблема, чтобы закончить сеанс отладки, переходит к вкладке Editor или Live Editor и нажимает
Stop. После того, как вы заканчиваете отладку, нормальный >>
подсказка в Командном окне вновь появляется вместо K>>
подсказка. Вы больше не можете получать доступ к стеку вызовов функции.
Чтобы избежать беспорядка, убедитесь, что закончили свой сеанс отладки каждый раз, когда вы сделаны, отладив. Если вы вносите изменения в файл и сохраняете его при отладке, MATLAB заканчивает сеанс отладки. Если MATLAB становится безразличным, когда он делает паузу, нажмите Ctrl+C, чтобы закончить отладку.
Можно выполнить большинство действий отладки при помощи горячих клавиш или при помощи функций в Командном окне. Эта таблица описывает отладку действий и связанных горячих клавиш и функций, которые можно использовать, чтобы выполнить их.
Действие | Описание | Горячая клавиша | Функция |
---|---|---|---|
Продолжение | Продолжите петлять, пока конец файла не достигнут или пока с другой точкой останова не сталкиваются. | F5 | |
Шаг | Запустите текущую строку кода. | F10 (Shift+Command+O в macOS системах) | |
Вступить | Запустите текущую строку кода, и, если линия содержит вызов другой функции, шага в эту функцию. | F11 (Shift+Command+I в macOS системах) |
|
Выйти | После вступания, остальная часть запуска вызванной функции, оставляют вызванную функцию, и затем делают паузу. | Shift+F11 (Shift+Command+U в macOS системах) | |
Остановка | Окончание сеанса отладки. | Shift+F5 | |
Установка точки останова | Установите точку останова a текущая линия, если никакая точка останова не существует. | F12 | |
Ясная точка останова | Очистите точку останова в текущей линии. | F12 |