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