Установка точек останова

Начиная с R2021b. Установка точек останова замен (R2021a) и код отладки в Live Editor (R2021a).

Установка точек останова приостанавливает выполнение вашего MATLAB® программа так, чтобы можно было исследовать значения, где вы думаете проблема, может произойти. Можно установить точки останова в интерактивном режиме в Редакторе или Live Editor, или при помощи функций в Командном окне.

Существует три типа точек останова:

  • Стандарт

  • Условное выражение

  • Ошибка

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

По умолчанию, когда MATLAB достигает точки останова, он открывает файл, содержащий точку останова. Отключить эту опцию:

  1. На вкладке «Главная страница», в разделе Environment, нажмите Preferences.

  2. В окне Preferences выберите MATLAB> Editor/Debugger.

  3. Очистите опцию Automatically open file when MATLAB reaches a breakpoint и нажмите OK.

Стандартные точки останова

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

plotRand script with a red breakpoint at line three

Чтобы установить стандартную точку останова программно, используйте dbstop функция. Например, чтобы добавить точку останова в линии три в файле с именем plotRand.mВвод:

dbstop in plotRand at 3

Когда отладка файла, который содержит цикл, установила точку останова в цикле исследовать значения в каждом шаге цикла. В противном случае, если вы устанавливаете точку останова в начале цикла, MATLAB делает паузу в инструкции циклов только однажды. Например, этот код создает массив из десяти единиц и использует a for цикл, чтобы выполнить вычисление на элементах два - шесть из массива:

x = ones(1:10);

for n = 2:6
    x(n) = 2 * x(n-1);
end
Для MATLAB, чтобы сделать паузу в каждом шаге for цикл (в общей сложности пять раз), устанавливает точку останова в линии четыре.

Script showing a for loop with a red standard breakpoint on the line inside the loop

Условные точки останова

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

Чтобы установить условную точку останова, щелкните правой кнопкой по серой области слева от исполняемой линии, где вы хотите установить точку останова и выбрать Set Conditional Breakpoint. Если точка останова уже существует на той линии, выберите Set/Modify Condition. В диалоговом окне, которое открывается, введите условие и нажмите OK. Условием является любое допустимое выражение MATLAB, которое возвращает логическое скалярное значение.

Когда вы запускаете код, MATLAB выполняет условие прежде, чем запустить линию. Если условие соблюдают, MATLAB вводит режим отладки и делает паузу в линии. Например, этот код создает массив из десяти единиц и использует a for цикл, чтобы выполнить вычисление на элементах два - шесть из массива:

x = one(1:10)

for n = 2:6
    x(n) = 2 * x(n-1);
end

Установите условную точку останова в линии четыре с условием n >= 4. Когда вы запускаете код, MATLAB пробегает for циклично выполнитесь дважды, и делает паузу на третьей итерации в линии четыре когда n 4. Если вы продолжаете запускать код, MATLAB делает паузу снова в линии четыре на четвертой итерации когда n 5, и затем еще раз, когда n 6.

Script with a for loop with an orange conditional breakpoint on the line inside the loop

Также можно установить условную точку останова программно с помощью dbstop функция. Например, чтобы добавить условную точку останова в myprogram.m в линии шесть, введите:

dbstop in myprogram at 6 if n>=4

Точки останова по ошибке

В Редакторе можно установить точку останова по ошибке иметь MATLAB, приостанавливают и вводят режим отладки, если MATLAB сталкивается с проблемой. Установка точек останова по ошибке не поддерживается в Live Editor.

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

Чтобы установить точку останова по ошибке, на вкладке Editor, нажимают Run и выбор из этих опций:

  • Pause on Errors, чтобы сделать паузу при всех ошибках.

  • Pause on Warnings, чтобы сделать паузу на всех предупреждениях.

  • Pause on NaN or Inf , чтобы сделать паузу на NaN (не число) или Inf (бесконечные) значения.

В качестве альтернативы можно установить точку останова по ошибке программно при помощи dbstop функция с заданным condition. Например, чтобы приостановить выполнение при всех ошибках, введите:

dbstop if error
Приостановить выполнение в первой ошибке времени выполнения в try фрагмент try/catch блокируйтесь, который имеет идентификатор сообщения MATLAB:ls:InputsMustBeStringsВвод:
dbstop if caught error MATLAB:ls:InputsMustBeStrings

Точки останова в анонимных функциях

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

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

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

Script showing a line of code with two anonymous functions, with red breakpoints displayed on the line number and before each of the two anonymous functions. A tooltip displays information about the breakpoints.

Когда вы устанавливаете точку останова в анонимной функции, MATLAB делает паузу, когда анонимная функция вызвана. Линия, подсвеченная в зеленом, - то, где код задает анонимную функцию. Линия, подсвеченная в сером, - то, где код вызывает анонимные функции. Например, в этом коде, MATLAB приостанавливает программу в наборе точки останова для анонимной функции g, заданный в линии семь, и зашел в линию восемь.

Script showing a line of code with two anonymous functions. The line has a green arrow and green highlighting, indicating that MATLAB is paused at that line. The line below it is highlighted in gray, indicating that it is the line that called the anonymous functions.

Некорректные точки останова

Темно-серая точка останова указывает на некорректную точку останова.

Script showing a dark gray, invalid breakpoint at line three

Точки останова недопустимы по этим причинам:

  • Несохраненные изменения в файле. Чтобы сделать точки останова допустимыми, сохраните файл. Серые точки останова становятся красными, указывая, что они теперь допустимы.

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

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

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

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

Точка останова становится светло-серой, чтобы указать, что она отключена.

Script showing a light gray, disabled breakpoint at line three

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

Серые точки останова становятся красными, и выполнение программы делает паузу в той линии.

Чтобы включить или отключить все точки останова в файле, щелкните правой кнопкой по серой области слева от исполняемой линии и выберите Enable All Breakpoints in File или Disable All Breakpoints in File. Эти опции доступны, только если существует по крайней мере одна точка останова, чтобы включить или отключить.

Ясные точки останова

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

Чтобы очистить точку останова, щелкните правой кнопкой по значку точки останова и выберите Clear Breakpoint из контекстного меню. В качестве альтернативы можно нажать клавишу F12, чтобы очистить точку останова.

Чтобы очистить точку останова программно, используйте dbclear функция. Например, чтобы очистить точку останова в линии шесть в файле под названием myprogram.mВвод:

 dbclear in myprogram at 6

Чтобы очистить все точки останова в файле, щелкните правой кнопкой по области точки останова и выберите Clear All Breakpoints in File. Можно также использовать dbclear all команда. Например, чтобы очистить все точки останова в файле под названием myprogram.mВвод:

dbclear all in myprogram

Чтобы очистить все точки останова во всех файлах, включая точки останова по ошибке, щелкают правой кнопкой по области точки останова и выбирают Clear All Breakpoints. Также можно использовать dbclear all команда.

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

Похожие темы