exponenta event banner

dbstop

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

Описание

пример

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

пример

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)

Входные аргументы

свернуть все

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

Пример: myfile.m

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

Пример: myfile>myfunction

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

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

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

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

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

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

Примечание

При установке точки останова невозможно указать location если file включает в себя маркер файла. Например, команда 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 in filename. Чтобы удалить все точки останова во всех файлах, используйте dbclear all. Дополнительные сведения см. в разделе dbclear.

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

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