dbstack

Стек вызовов функции

Описание

пример

dbstack отображает номера строки и имена файлов вызовов функции, которые привели к текущему условию паузы, перечисленному в порядке, в котором они выполняются. Отображение запускается с выполняющегося в данного момента, функционирует и продолжается, пока это не достигает самой верхней функции. Каждый номер строки является гиперссылкой на ту линию в Редакторе. Обозначение functionname>localfunctionname описывает местоположение локальной функции.

пример

dbstack(n) не использует первый n стековые фреймы от отображения. Этот синтаксис может быть полезным, например, при издании dbstack из обработчика ошибок.

пример

dbstack(___, '-completenames') выводит полностью определенное имя каждой функции в стеке.

Можно задать '-completenames' с любым из входных параметров в предыдущих синтаксисах.

пример

ST = dbstack(___) возвращает информацию трассировки стека в m- 1 структура, ST.

пример

[ST,I] = dbstack(___) также возвращает I, текущий индекс рабочей области.

Примеры

свернуть все

При отладке файла кода MATLAB® выпустите dbstack команда, чтобы просмотреть информацию трассировки стека.

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

function n = myfile(x)
n = myfunction(x-1);
end

function z = myfunction(y)
z = 2 / y;
end

Установите точку останова в myfunction и запустите myfile с входом 1. При выполнении myfunction, MATLAB приостанавливает в линии z = 2/y.

dbstop in myfile>myfunction
myfile(1);

Запустите dbstack команда. MATLAB отображает номера строки и имена файлов вызовов функции, которые привели к текущей точке останова.

dbstack
In myfile>myfunction (line 5)
In myfile (line 2)

Сохраните полное имя файла, имя функции и номер строки для каждой функции в стеке при отладке файла.

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

function n = myfile(x)
n = myfunction(x-1);
end

function z = myfunction(y)
z = 2 / y;
end

Установите точку останова в myfunction и запустите myfile с входом 1. При выполнении myfunction, MATLAB приостанавливает в линии z = 2/y.

dbstop in myfile>myfunction
myfile(1);

Запустите dbstack команда, не используя первую систему координат и запрашивая полные имена. MATLAB возвращает информацию трассировки стека в заданной структуре ST.

[ST, I] = dbstack('-completenames', 1)
ST = 

    file: 'C:\myProject\myfile.m'
    name: 'myfile'
    line: 2


I =

     1

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

свернуть все

Количество систем координат, чтобы не использовать, заданный как неотрицательное целое число.

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

свернуть все

Информация трассировки стека, возвращенная как m- 1 структура, где m количество функций в стеке вызовов. Структура имеет эти поля.

fileФайл, в котором появляется функция. Это поле пусто, если нет никакого файла.
nameИмя функции в файле.
lineНомер строки вызова функции.

Примечание

Если вы продвигаетесь мимо конца файла, dbstack возвращает отрицательное значение номера строки, чтобы идентифицировать тот особый случай. Например, если последняя линия, которая будет выполняться, является линией 15, затем dbstack номером строки является 15 прежде чем вы выполните ту линию и -15 после.

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

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