当前位置: 首页 > article >正文

MATLAB中dbstack函数用法

目录

语法

说明

示例

调试时查看堆栈跟踪信息

存储堆栈中每个函数的完整名称


        dbstack函数的功能是函数调用堆栈。

语法

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

说明

dbstack 会显示行号和导致当前暂停状态的函数调用的文件名,按它们的执行顺序列出。显示内容从当前正在执行的函数开始,一直到最顶层函数为止。每个行号都是一个超链接,指向编辑器中对应的行。functionname>localfunctionname 表示法用于描述局部函数的位置。

dbstack(n) 会在显示中省略前 n 个堆栈帧。此语法很有用,例如从错误处理程序内发出 dbstack 时。

dbstack(___, '-completenames') 将输出堆栈中每个函数的完全限定名称。

        可以指定将 '-completenames' 与上述语法中的任何输入参数结合使用。

ST = dbstack(___) 以 m x 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 中设置断点,并通过输入 1 运行 myfile。执行 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 中设置断点,并通过输入 1 运行 myfile。执行 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

参数说明

n — 要忽略的帧数

        要忽略的帧数,指定为非负整数。

ST — 堆栈跟踪信息

        堆栈跟踪信息,以 m×1 结构体形式返回,其中 m 是调用堆栈中的函数数量。该结构体包含以下字段。

file出现该函数的文件。如果没有文件,则此字段为空。
name函数在文件中的名称。
line函数调用的行号。

注意

        如果处理时越过了文件尾,dbstack 返回负行号以指出该特殊情况。例如,如果要执行的最后一行是第 15 行,则在您执行该行之前,dbstack 行号是 15,执行之后是 -15。

I — 当前工作区索引

        当前工作区索引,返回为正整数。索引表示当前工作区与 MATLAB 当前暂停或正在执行的工作区之间的工作区数量。


http://www.kler.cn/a/466446.html

相关文章:

  • Sql中WITH的作用
  • react axios 优化示例
  • Linux运维相关基础知识(二)
  • 为什么HTTP请求后面有时带一个sign参数(HTTP请求签名校验)
  • redis源码系列--(四)--redis cluster
  • Go小技巧易错点100例(二十一)
  • 【pyqt】(四)Designer布局
  • 根据 el-dialog 的高度动态计算 el-table 的高度
  • 常规继承类对象大小
  • Cause: java.sql.SQLException: sql injection violation, comment not allow异常问题处理
  • 【MySQL基础篇】三、表结构的操作
  • 最新MySQL面试题(2025超详细版)
  • 【GeekBand】C++设计模式笔记22_Chain of Responsibility_职责链
  • AWS Lambda基础知识
  • 【Vue】分享一个快速入门的前端框架以及如何搭建
  • 非docker方式部署openwebui过程记录
  • linux-centos-安装miniconda3
  • 掌控ctf-2月赛
  • 区块链安全常见的攻击分析——可预测随机数漏洞 (Predictable Randomness Vulnerability)【12】
  • 路由基本配置实验
  • 《一个孤独漫步者的遐想-卢梭》阅读笔记
  • C#数字转大写人民币
  • docker镜像制作的命令,docker自定义镜像
  • AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲
  • VTK知识学习(28)-区域提取
  • SpringMVC的消息转换器