dbstack

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

Описание

пример

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

пример

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

пример

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

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

пример

ST = dbstack(___) возвращает информацию трассировки стека в m-by- 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-by- 1 структура, где m - количество функций в стеке вызовов. Структура имеет эти поля.

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

Примечание

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

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

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