dbstop

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

Синтаксис

dbstop in file
dbstop in file at location
dbstop in file if expression
dbstop in file at location if expression
dbstop if condition
dbstop(b)

Описание

пример

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

пример

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 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 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 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)

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

свернуть все

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

Пример: myfile. m

Если имя файла включает опцию -completenames, то файл не должен быть на пути поиска файлов, пока имя файла является Полностью определенным Именем.

Пример: c: \Program Files\MATLAB\myfile.m-completenames

Кроме того, 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

Приостановите условие, заданное как одна из этих опций:

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

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

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

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

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

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

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

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

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

Больше о

свернуть все

Полностью определенное имя

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

  • Платформы Windows® — Имя файла, которое начинается с двух наклонных черт влево (\\) или с буквой диска, сопровождаемой двоеточием (:).

  • Платформы UNIX® — Имя файла, которое начинается с наклонной черты (/) или тильда (~).

Советы

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

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

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

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

Была ли эта тема полезной?