Установка точек останова приостанавливает выполнение вашей программы MATLAB® так, чтобы можно было исследовать значения, где вы думаете, что проблема может быть. Можно установить точки останова с помощью Редактора или при помощи функций в Командном окне.
Существует три типа точек останова:
Стандартные точки останова
Условные точки останова
Точки останова по ошибке
Можно установить точки останова только в исполняемых строках в сохраненных файлах, которые находятся в текущей папке или в папках на пути поиска файлов. Можно установить точки останова в любое время, является ли MATLAB неактивным или занятым выполнением файла.
По умолчанию MATLAB автоматически открывает файлы, когда он достигает точки останова. Отключить эту опцию:
На вкладке «Главная страница», в разделе Environment, нажмите Preferences.
Диалоговое окно Preferences открывается.
Выберите MATLAB> Editor/Debugger.
Очистите Автоматически открытый файл, когда MATLAB достигает опции точки останова, и нажать ОК.
Стандартная точка останова делает паузу в заданной строке в файле.
Чтобы установить стандартную точку останова кликают по области точки останова в исполняемой строке, где вы хотите установить точку останова. Область точки останова является узким столбцом на левой стороне Редактора, справа от номера строки. Исполняемые строки обозначаются — (тире) в области точки останова. Если исполняемый оператор охватывает несколько строк, можно установить точку останова в каждой строке в том операторе, даже при том, что дополнительные строки не имеют — (тире) в области точки останова. Например, в этом коде, можно установить точку останова во всех четырех строках:
При попытке установить точку останова в строке, которая не является исполняемым файлом, таким как комментарий или пустая строка, MATLAB устанавливает его в следующей исполняемой строке.
Также можно установить стандартную точку останова программно с помощью функции dbstop
. Например, чтобы добавить точку останова в строке 2 в файле с именем myprogram.m
, введите:
dbstop in myprogram at 2
myprogram
.
Чтобы исследовать значения в инкрементах в цикле for
, установите точку останова в цикле, а не в начале цикла. Если вы устанавливаете точку останова в начале цикла for, и затем продвигаетесь через файл, MATLAB делает паузу в операторе for
только однажды. Однако, если вы помещаете точку останова в цикле, MATLAB делает паузу в каждом, проходят через цикл.
Условная точка останова заставляет MATLAB, делают паузу в заданной строке в файле только, когда заданное условие соблюдают. Используйте условные точки останова когда это необходимо, чтобы исследовать результаты после некоторых итераций в цикле.
Чтобы установить условную точку останова, щелкните правой кнопкой по области точки останова по исполняемой строке, где вы хотите установить точку останова и выбрать Set/Modify Condition
.
Когда диалоговое окно Editor откроется, введите условие и нажмите ОК. Условие является любым допустимым выражением MATLAB, которое возвращает логическое скалярное значение.
Как отмечено в диалоговом окне, MATLAB оценивает условие прежде, чем запустить строку. Например, предположите, что у вас есть файл под названием myprogram.m
m.
Добавьте точку останова со следующим условием в строке 6:
n >= 4
Также можно установить условную точку останова программно с помощью функции dbstop
. Например, чтобы добавить условную точку останова в myprogram.m
в строке 6 типов:
dbstop in myprogram at 6 if n>=4
Когда вы петляете, MATLAB вводит режим отладки и делает паузу в строке, когда условие соблюдают. В примере myprogram
MATLAB пробегает цикл for
дважды и делает паузу на третьей итерации в строке 6, когда n
является 4
. Если вы продолжаете выполняться, MATLAB делает паузу снова в строке 6 на четвертой итерации, когда n
является 5
.
Точка останова по ошибке заставляет MATLAB, приостанавливают выполнение программы и вводят режим отладки, если MATLAB сталкивается с проблемой. В отличие от стандартных и условных точек останова, вы не устанавливаете эти точки останова в определенной строке в определенном файле. Когда вы устанавливаете точку останова по ошибке, MATLAB делает паузу в любой строке в любом файле, если заданное состояние ошибки происходит. MATLAB затем вводит режим отладки и открывает файл, содержащий ошибку со стрелкой выполнения в строке, содержащей ошибку.
Чтобы установить точку останова по ошибке, на вкладке Editor, нажимают Run и выбор из этих опций:
Сделайте паузу при Ошибках сделать паузу при всех ошибках.
Сделайте паузу на Предупреждениях сделать паузу на всех предупреждениях.
Сделайте паузу на NaN или Inf, чтобы приостановить на NaN
(не число) или Inf
(бесконечные) значения.
Также можно установить точку останова программно при помощи функции dbstop
с заданным condition
. Например, чтобы приостановить выполнение при всех ошибках, ввести
dbstop if error
try
блока try/catch
, который имеет идентификатор сообщения MATLAB:ls:InputsMustBeStrings
, ввестиdbstop if caught error MATLAB:ls:InputsMustBeStrings
Можно установить несколько точек останова в строке кода MATLAB, который содержит анонимные функции. Например, можно установить точку останова для самой строки, где программное обеспечение MATLAB делает паузу в начале строки. Или, альтернативно, можно установить точку останова для каждой анонимной функции в строке.
Когда вы добавляете точку останова к строке, содержащей анонимную функцию, Редактор спрашивает, где в строке вы хотите добавить точку останова. Если существует больше чем одна точка останова в строке, значок точки останова является синим, независимо от состояния любой из точек останова на той строке.
Чтобы просмотреть информацию обо всех точках останова на строке, наведите указатель на значок точки останова. Подсказка появляется с доступной информацией. Например, в этом коде, строка 5 содержит две анонимных функции с точкой останова в каждом. Подсказка говорит нам, что обе точки останова включены.
Когда вы устанавливаете точку останова в анонимной функции, MATLAB делает паузу, когда анонимная функция вызвана. Зеленая стрелка показывает, где код задает анонимную функцию. Белая стрелка показывает, где код вызывает анонимные функции. Например, в этом коде, MATLAB приостанавливает программу в наборе точки останова для анонимной функции sqr
в строке 2 в файле под названием myanonymous.m
m. Белая стрелка указывает, что функция sqr
вызвана от строки 3.
Серая точка останова указывает на некорректную точку останова.
Точки останова недопустимы по этим причинам:
В файле существуют несохраненные изменения. Чтобы сделать точки останова допустимыми, сохраните файл. Серые точки останова становятся красными, указывая, что они теперь допустимы.
В файле существует синтаксическая ошибка. Когда вы устанавливаете точку останова, сообщение об ошибке кажется указывающим, где синтаксическая ошибка. Чтобы сделать точку останова допустимой, зафиксируйте синтаксическую ошибку и сохраните файл.
Можно отключить выбранные точки останова так, чтобы программа временно проигнорировала их и непрерывные выполнения. Например, вы можете отключить точку останова после того, как вы думаете, что идентифицировали и исправили проблему, или если вы используете условные точки останова.
Чтобы отключить точку останова, щелкните правой кнопкой по значку точки останова и выберите Disable Breakpoint из контекстного меню.
X
, кажется, через значок точки останова указывает, что это отключено.
Чтобы повторно включить точку останова, щелкните правой кнопкой по значку точки останова и выберите Enable Breakpoint из контекстного меню.
X
больше не появляется на значке точки останова, и выполнение программы делает паузу в той строке.
Чтобы включить или отключить все точки останова в файле, выберите Enable All in File или Disable All in File. Эти опции только доступны, если существует по крайней мере одна точка останова, чтобы включить или отключить.
Все точки останова остаются в файле, пока вы не очищаетесь (удаляют) их или пока они не очищены автоматически в конце вашего сеанса работы с MATLAB.
Чтобы очистить точку останова, щелкните правой кнопкой по значку точки останова и выберите Clear Breakpoint из контекстного меню.
Также можно использовать функцию dbclear
. Например, чтобы очистить точку останова в строке 6 в файле под названием myprogram.m
, ввести
dbclear in myprogram at 6
Чтобы очистить все точки останова в файле, щелкните правой кнопкой по области точки останова и выберите Clear All in File. Можно также использовать
команду all
dbclear
. Например, чтобы очистить все точки останова в файле под названием myprogram.m
, ввести
dbclear all in myprogram
Чтобы очистить все точки останова во всех файлах, включая точки останова по ошибке, щелкают правой кнопкой по области точки останова и выбирают Clear All. Также можно использовать команду dbclear all
.
Точки останова очищаются автоматически, когда вы заканчиваете сеанс работы с MATLAB. Чтобы сохранить ваши точки останова для будущих сеансов, смотрите, что dbstatus
функционирует.