dbstop

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

Описание

пример

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

пример

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

пример

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

пример

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

пример

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