exponenta event banner

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