MATLAB.Exponenta
–Û·Ë͇ Matlab&Toolboxes

MATLAB

В.Г.Потемкин "Введение в Matlab" (v 5.3)
Глава  4. Отладка и профилирование M-файлов

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

4.4. Команды отладки и профилирования

DBSTOP
Установить контрольную точку

Синтаксис:

        dbstop [in] <имя М-функции>
        dbstop [in] <имя М-функции> [at] <номер строки>
        dbstop [if] error
        dbstop [if] naninf
        dbstop [if] infnan

Описание:

Группа команд dbstop устанавливает режим отладки в среде системы MATLAB. Она позволяет установить контрольную точку в определенной строке М-функции или вызвать прерывание в случае возникновения предупреждения или ошибки. Если установленное условие оказалось выполненным, выводится специальное приглашение K>>, которое разрешает выполнить любую команду системы MATLAB.

Команда dbstop [in] <имя М-функции> останавливает исполнение процедуры в первой строке М-функции как только она будет вызвана. Служебное слово in, помещенное в квадратные скобки [ ], является необязательным.

Команда dbstop [in] <имя М-функции> [at] <номер строки> останавливает выполнение в заданной строке указанного М-файла. В состав имени функции может быть включен путь доступа. Служебные слова in и at, помещенные в квадратные скобки [ ], являются необязательными.

Команда dbstop if error устанавливают контрольную точку по условию, связанному с возникновением ошибки при исполнении модуля. В случае возникновения такой ситуации можно проверить переменные рабочей области и последовательность вызова функций, приведших к ошибке. Однако продолжить выполнение М-файла оказывается невозможным.

Команды bstop if naninf и bstop if infnan устанавливают контрольную точку по условию, связанному с появлением результата NaN или inf.

Команда dbstop if warning устанавливают контрольную точку по условию, связанному с появлением предупреждения при исполнении модуля:

  • если контрольная точка определяется номером строки, то исполнение модуля прерывается перед этой строкой;
  • если именем модуля, то останов перед первой исполнимой строкой;
  • если условием if error, то останов при появлении ошибки;
  • если условиями if naninf, if infnan, то останов при получении результата NaN или inf.

Сопутствующие команды: DBCONT, DBSTEP, DBCLEAR, DBTYPE, DBSTACK, DBUP, DBDOWN, DBSTATUS, DBQUIT, PARTIALPATH.

DBCLEAR
Удаление контрольных точек

Синтаксис:

         dbclear in <имя М-функции>
         dbclear in <имя М-функции> at <номер строки>
         dbclear all in <имя М-функции>
         dbclear all
         dbclear if error
         dbclear if warning
         dbclear if naninf
         dbclear if infnan

Описание:

Команды из группы dbclear удаляют контрольные точки, установленные ранее соответствующей командой dbstop.

Команда dbclear [in] <имя М-функции> удаляет все контрольные точки в данном М-файле. Служебное слово in, помещенное в квадратные скобки [ ], является необязательным.

Команда dbclear [in] <имя М-функции> [at] <номер строки> удаляет контроль­ную точку в заданной строке данной М-функции. Служебные слова in и at, помещенные в квадратные скобки [ ], являются необязательными.

Команда dbclear all [in] <имя М-функции> удаляет все контрольные точки в данном М-файле. Служебное слово in, помещенное в квадратные скобки [ ], является необязательным.

Команда dbclear all удаляет во всех активных М-функциях все контрольные точки, за исключением тех, которые связаны с фиксацией предупреждений и ошибок.

Команды dbclear if error и dbclear if warning удаляют контрольные точки, установленные командами dbstop if error и dbstop if warning, соответственно.

Команды dbclear if naninf и dbclear if infnan удаляют контрольные точки, установленные командами dbstop if naninf и dbstop if infnan, соответственно.

Сопутствующие команды: DBCONT, DBDOWN, DBQUIT, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBTYPE, DBUP, PARTIALPATH.

DBSTEP
Выполнить одну или несколько строк программы в режиме отладки

Синтаксис:

        dbstep
        dbstep <количество строк>
        dbstep in

Описание:

Группа команд dbstep позволяет управлять режимом отладки и включает 3 команды.

  • Команда dbstep реализует построчное исполнение М-функции.
  • Команда dbstep <количество строк> допускает исполнение сразу нескольких строк.
  • Команда dbstep in связана с исполнением строки, в которой присутствует вызов другой М-функции. В последнем случае, если следующая строка содержит вызов М-функции, то применение команды dbstep in позволяет создать контрольную точку в первой строке вызываемой функции.

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBQUIT, DBSTACK, DBSTATUS, DBSTOP, DBTYPE, DBUP

DBCONT
Продолжить выполнение

Синтаксис:

         dbcont

Описание:

Команда dbcont вызывает исполнение М-функции до следующей контрольной точки, установленной командами dbstop или dbstep.

Сопутствующие команды: DBCLEAR, DBDOWN, DBQUIT, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBTYPE, DBUP .

DBSTACK
Стек вызываемых М-функций

Синтаксис:

         dbstack [ST, I] = dbstack

Описание:

Команда dbstack выводит на терминал номера строк и имена вызванных М-функций, начиная от контрольной точки и до самого внешнего модуля, за исключением М-сценария (Script-файла).

Оператор [ST, I] = dbstack возвращает стек вызванных функций в виде массива записей (структуры) ST размера m?1 с полями ST.line, ST.name. Текущей рабочей области присваивается индекс I=1; при однократном использовании команды dbup индекс I увеличивается на 1, так что самый высокий индекс имеет базовая рабочая область системы MATLAB.

Пример.
Рассмотрим использование команды dbstack при останове в некоторой контрольной точке:

     K» dbstack
      > In d:\matlab5\sqsum.m at line 3
        In d:\matlab5\variance.m at line 3

Рассмотрим использование оператора [ST, I] = dbstack при останове в той же контрольной точке:

     [ST, I] = dbstack
      ST =
      2x1 struct array with fields:
          line
          name
      I =   1

Выведем содержимое полей ST.name и ST.line

      K»ST.name
      ans = d:/matlab5/sqsum.m
      ans = d:/matlab5/variance.m
     K» ST.line
      ans = 3
      ans = 3

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBQUIT, DBSTATUS, DBSTEP, DBSTOP, DBTYPE, DBUP.

DBUP
Переход между рабочими областями снизу вверх

Синтаксис:

        dbup

Описание:

Команда dbup осуществляет переход в стеке вызываемых М-функций снизу вверх. Все переменные доступны для просмотра (команды who, whos) и обработки, и можно проследить, как они изменялись вплоть до значения, которое было передано отлаживаемому модулю. Рабочая область переменных самого внешнего модуля называется базовоой рабочей областью. Для продолжения отладки выполнения команды, обратной dbup (команда dbdown), не требуется.

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBQUIT, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBTYPE

DBDOWN
Переход между рабочими областями сверху вниз

Синтаксис:

         dbdown

Описание:

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

Сопутствующие команды: DBCLEAR, DBCONT, DBQUIT, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBTYPE, DBUP.

DBSTATUS
Cписок контрольных точек данной М-функции

Синтаксис:

        dbstatus
        dbstatus <имя М-функции>
        s = dbstatus

Описание:

Команда dbstatus выводит на терминал список всех контрольных точек, включая контрольные точки, связанные с ошибками и предупреждениями, а также с результатами вычислений вида NaN и Inf.

Команда dbstatus <имя М-функции> выводит на терминал список всех контрольных точек, определенных для данной М-функции. Эту команду можно использовать в формах dbstatus class/<имя М-функции>, dbstatus private/<имя М-функции>, dbstatus private/class/<имя М-функции>, чтобы создать список контрольных точек для методов, частных функций или частных методов соответственно. Кроме того, во всех этих случаях можно связывать имя функции с подфункцией в форме dbstatus <имя М-функции>/<имя подфункции>.

Оператор s = dbstatus возвращает информацию о контрольных точках в виде массива записей (структуры) размера m?1 с полями s.name, s.line, s.cond, которые содержат имена М-функций, вектор номеров строк с контрольными точками, строки условий (error, warning или naninf).

Пример.
Получим список всех контрольных точек:

         K» dbstatus
         Breakpoint for d:\matlab5\sqsum.m is on line 3.
         Breakpoints for d:\matlab5\variance.m are on lines 3, 4.

Получим список всех контрольных точек в виде массива записей размера 2x1:

        K» s = dbstatus
         s =
         2x1 struct array with fields:
              name
              line
              cond

Выведем содержимое полей s.name, s.line, s.cond:

K” s.name K” s.line K” s.cond
ans = d:\matlab5\sqsum.m ans = 3 ans = ''
ans = d:\matlab5\variance.m ans = 3    4 ans = ''

Получим список контрольных точек, когда в состав М-функции variance включена подфункция sqsum:

          K» dbstatus
         
Breakpoint for d:\matlab5\variance.m is on line 4.
          Breakpoint for d:\matlab5\variance.m (sqsum) is on line 7.

Получим список контрольных точек подфункция sqsum:

          K» dbstatus variance/sqsum
          Breakpoint for d:\matlab5\variance.m (sqsum) is on line 7.

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBQUIT, DBSTACK, DBSTEP, DBSTOP, DBTYPE, DBUP.

DBTYPE
Текст М-функции с указанием номеров строк

Синтаксис:

         dbtype<имяМ-функции>
         dbtype <имя М-функции><начало> : <конец>

Описание:

Команда dbtype <имя М-функции> <начало> : <конец> позволяет вывести на терминал текст М-функции с указанием номеров строк; для вывода части текста следует указать диапазон номеров выводимых строк; для вывода одной строки достаточно указать ее номер.

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBQUIT, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBUP, PARTIALPATH.

DBQUIT
Выход из режима отладки

Синтаксис:

         dbquit

Описание:

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

Пример:
Выход из режима отладки в случае, когда внешний модуль mslsnae2.m является M-сценарием (Script-файлом):

          K» dbstack
          In d:\toolbox\snae\pencil.m at line 20
          In d:\toolbox\snae\msnae2.m at line 34
          K» dbquit
          Error in ==> d:\toolbox\snae2\mslsnae2.m
          On line 70 ==> [x, y, err] = msnae2(Axy, P, sx, sy, nv)
           »

Сопутствующие команды: DBCLEAR, DBCONT, DBDOWN, DBSTACK, DBSTATUS, DBSTEP, DBSTOP, DBTYPE, DBUP.

PROFILE
Измерить и вывести на экран профиль исполняемого М-файла

Синтаксис: profile имя М-функции profile report _ | n | frac profile plot profile on | off | reset | done info = profile

Описание:

Утилита профилировщика помогает отладить и оптимизировать М-функции, фиксируя время выполнения каждой строки программы. Утилита создает вектор измерений для каждой строки программы в профилируемом М-файле. При выполнении программы профилировщик обновляет вектор измерений с учетом времени, затрачиваемого на выполнение соответствующей строки. Команда profile имя М-функции стартует профилировщик для заданной функции, имя которой должно быть именем М-файла, возможно, с указанием частичного пути доступа.

Команда profile report _ | n | frac выводит на экран либо полный отчет о профиле М-файла (в отсутствии каких-либо опций), либо только об n строках с наибольшим временем исполнения, либо о тех строках, доля затраченного времени для которых от общего времени выполнения превышает значение frac из диапазона от 0 до 1.

Команда profile plot выводит на экран результаты профилирования в виде диаграммы Парето.

Команды profile on ? profile off запускают или приостанавливают процесс профилирования, соответственно; команда profile reset очищает вектора измерений, не отключая профилровщика; команда profile done завершает работу профилировщика и удаляет сопутствующие данные.

Оператор info = profile возвращает результаты профилирования в виде структуры со следующими полями: file Полный путь доступа к профилируемой функции. function Имя профилируемой функции. interval Интервал измерения, измеренный в секундах. count Вектор измерений. state

Состояние профилировщика: on - активен; off - не активен. Профилировщик отслеживает количество интервалов, затраченных на выполнение встроенной функции. Поведение профилировщика зависит от свойств корневого объекта и может управляться с помощью команд set и get. Одновременно профилировщик может обрабатывать только один М-файл.

Сопутствующие команды: DEBUG, PROFSUMM.

  В оглавление книги \ К следующему разделу \ К предыдущему разделу \ Предметный указатель

 


Поиск по сайту:

Система Orphus

Яндекс.Метрика