dbstop

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

Описание

пример

dbstop in file устанавливает точку прерывания в первой исполняемой линии в file. Когда бегаешь file, MATLAB® входит в режим отладки, останавливает выполнение в точке останова и отображает линию, в которой она приостановлена.

пример

dbstop in file at location устанавливает точку останова в указанном месте. Выполнение MATLAB останавливается непосредственно перед этим местоположением, если местоположение не является анонимной функцией. Если местоположение является анонимной функцией, то выполнение останавливается сразу после точки останова.

пример

dbstop in file if expression устанавливает условную точку останова в первой исполняемой линии файла. Выполнение останавливается только в том случае, если expression вычисляет значение true (1).

пример

dbstop in file at location if expression устанавливает условную точку останова в заданном месте. Выполнение останавливается в или непосредственно перед этим местоположением, только если expression вычисляет значение true.

пример

dbstop if condition Паузы выполнение в линию, которая соответствует заданному condition, таких как error или naninf. В отличие от других точек прерывания, вы не устанавливаете эту точку прерывания в определенной линии в определенном файле. MATLAB останавливается в любой линии в любом файле, когда заданный condition происходит.

пример

dbstop(b) восстанавливает ранее сохраненные точки останова b. Файлы, содержащие сохраненные точки останова, должны находиться в пути поиска файлов или в текущей папке. MATLAB присваивает контрольные точки по номерам линий, поэтому строки в файле должны быть такими же, как при сохранении контрольных точек.

Примеры

свернуть все

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

Создайте файл, buggy.m, который содержит эти операторы.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

Выпуск dbstop команда и запуск buggy.

dbstop in buggy
buggy(1:5)

MATLAB отображает линию, где он останавливается и входит в режим отладки.

2   n = length(x);
K>> 

Тип dbquit для выхода из режима отладки.

Установите точку останова в программе в первой исполняемой линии локальной функции.

Создайте файл, myfile.m, который содержит эти операторы

function n = myfile(x)
n = myfunction(x);

function y = myfunction(x)
y = x + 1;

Установите точку останова в myfunction.

 dbstop in myfile>myfunction

Установите точку останова в программе, которая заставляет MATLAB приостановиться после некоторых итераций цикла.

Создайте файл, myprogram.m, который содержит эти операторы

x = ones(1,10);

for n = 1:10
x(n) = x(n) + 1;
end

Установите точку останова на паузу, когда n >= 4, и запустите код.

dbstop in myprogram at 4 if n>=4
myprogram

MATLAB останавливается в линии 4 после 3 итераций цикла, когда n = 4.

4   x(n) = x(n) + 1;
K>> 

Тип dbquit для выхода из режима отладки.

Установите точку останова и приостановите выполнение, если произошла ошибка времени выполнения.

Создайте файл, mybuggyprogram.m, который содержит эти операторы.

x = ones(1,10);

for n = 1:10
x(n) = x(n+1) + 1;
end

Установите точку останова по ошибке и вызовите mybuggyprogram.

dbstop if error
mybuggyprogram

Происходит ошибка времени выполнения, и MATLAB переходит в режим отладки, пауза на линию 4 в mybuggyprogram.m.

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

Тип dbquit для выхода из режима отладки.

Выполняйте MException.last для получения идентификатора сообщения об ошибке, сгенерированного программой.

MException.last
ans = 

  MException with properties:

    identifier: 'MATLAB:badsubscript'
       message: 'Index exceeds matrix dimensions.'
         cause: {}
         stack: [1×1 struct]

Очистите точку останова по ошибке и установите новую точку останова по ошибке, указывающее идентификатор сообщения об ошибке, которое нужно захватить. Функции mybuggyprogram.

dbclear if error
dbstop if error MATLAB:badsubscript
mybuggyprogram

Происходит та же ошибка времени выполнения, и MATLAB переходит в режим отладки, пауза в линии 4 в mybuggyprogram.m.

Index exceeds matrix dimensions.
Error in mybuggyprogram (line 4)
x(n) = x(n+1) + 1; 
4   x(n) = x(n+1) + 1;

Тип dbquit для выхода из режима отладки.

Установите точку останова и приостановите выполнение, если код возвращает NaN значение.

Создайте файл, buggy.m, что требует вектора входа.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

Установите предупреждающую точку останова и вызовите buggy с входным вектором, содержащим 0 как один из его элементов.

dbstop if naninf
buggy(0:2)

Происходит деление на нулевую ошибку, и MATLAB переходит в режим отладки, пауза в линии 3 в buggy.m.

NaN/Inf breakpoint hit for buggy on line 3.

Тип dbquit для выхода из режима отладки.

Установите, сохраните, очистите и затем восстановите сохраненные точки останова.

Создайте файл, buggy.m, который содержит эти операторов.

function z = buggy(x)
n = length(x);
z = (1:n)./x;

Установите точку останова по ошибке и стандартную точку останова во второй линии buggy.

dbstop at 2 in buggy
dbstop if error

Управляемый dbstatus. MATLAB описывает заданные точки останова.

dbstatus
Breakpoint for buggy is on line 2.
Stop if error.

Присвойте структуру, представляющую точки останова, переменной b, а затем сохраните b в MAT-файл buggybrkpnts. Использование b=dbstatus('-completenames') для сохранения абсолютных путей и последовательности вложений функции точек по оси Х.

b = dbstatus('-completenames');
save buggybrkpnts b

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

dbclear all

Восстановите точки останова путем загрузки MAT-файла и вызова dbstop с сохраненной структурой, b.

load buggybrkpnts
dbstop(b)

Входные параметры

свернуть все

Имя файла, заданное как вектор символов или строковый скаляр. Имя файла может включать partial path name для файлов в пути поиска файлов MATLAB или absolute path name для любого файла. Для получения дополнительной информации о допустимых именах файлов в MATLAB, смотрите Задать имена файлов.

Пример: myfile.m

В сложение, file может включать filemarker (>), чтобы задать путь к определенной локальной функции или вложенной функции в файле.

Пример: myfile>myfunction

Если file не является файлом кода MATLAB (для образца это встроенный или MDL-файл), затем MATLAB выдает предупреждение. MATLAB не может сделать паузу в файле, поэтому она останавливается перед выполнением файла.

Типы данных: char | string

Расположение точки останова для установки в file, заданный как один из следующих опций:

  • Номер линии в file задается как вектор символов или строковый скаляр. Значение по умолчанию является 1.

  • Номер линии в file, находится в номере анонимной функции и задается как вектор символов или строковый скаляр. Для примера, 1@2 задает линию номер 1 во второй анонимной функции. Номер анонимной функции по умолчанию 1.

  • Имя локальной функции в file, заданный как вектор символов или строковый скаляр.

Примечание

При установке точки останова вы не можете задать location если file включает filemarker. Для примера, команда dbstop in myfile>myfilefunction at 5 недопустимо.

Типы данных: char | string

Логическое выражение, которое вычисляет скаляр логическое значение 1 или 0, заданный как вектор символов или строковый скаляр.

Пример: n >= 4

Типы данных: char | string

Условие паузы, заданное как один из следующих опций:

  • error - Ошибка времени выполнения, которая происходит вне try/catch блок. Вы не можете возобновить выполнение после неустановленной ошибки времени выполнения.

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

    • dbstop if error останавливает выполнение при первой ошибке времени выполнения, которая происходит вне try/catch блок.

    • dbstop if error MATLAB:ls:InputsMustBeStrings останавливает выполнение при первой ошибке времени выполнения за пределами try/catch блок, который имеет идентификатор сообщения MATLAB:ls:InputsMustBeStrings.

  • caught error - Ошибка времени выполнения, которая возникает в try фрагмент try/catch блок. Если вы хотите, чтобы выполнение было приостановлено только в случае возникновения определенной ошибки, укажите идентификатор сообщения.

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

    Это условие не влияет, если вы отключаете предупреждения со warning off all команда или если вы отключаете предупреждения для заданного id. Дополнительные сведения об отключении предупреждений см. в разделе warning.

  • naninf - Код возвращает бесконечное значение (Inf) или значение, которое не является числом (NaN) в результате оператора, вызова функции или скалярного назначения.

Список точек по оси Х, ранее сохраненных в массиве структур с помощью b=dbstatus.

Совет

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

  • Чтобы возобновить выполнение после выполнения пауз точки останова, используйте dbcont или dbstep. Чтобы выйти из режима отладки, используйте dbquit. Чтобы удалить все точки останова в файле, используйте dbclear в filename. Чтобы удалить все точки останова во всех файлах, используйте dbclear all. Для получения дополнительной информации см. dbclear.

  • MATLAB может стать невосприимчивым, когда останавливается в точке останова, отображая модальное диалоговое окно или рисунок, созданную вашей программой. Чтобы выйти из режима отладки и вернуться к подсказке MATLAB (>>), используйте Ctrl+C.

Представлено до R2006a