Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我喜欢使用命令在matlab中进行调试。一些问题:
回答: 1)不是从键盘上来的。如果您使用的是编辑器并显示了“编辑器工具栏”,则将显示一个“堆栈”下拉列表,其中显示了整个调用堆栈,您可以跳转到任意级别。您可能可以通过查看下拉菜单中的内容来一起破解n级dbup / dbdown,但是由于调试器和您用于脚本编写的M代码之间的交互作用,很难通过Matlab编写调试器控制脚本。 2)如果您从“ K >>”调试器提示符下发出命令,则完成后应返回您从中发出命令的堆栈级别。您还在代码的底部设置断点了吗?也许您实际上是从嵌套调用堆栈中的断点看到辅助调试器“ K >>”的提示。本质上,您可以具有多个嵌套的调试器上下文。 例如: function f1 f2(); function f2() f3(); function f3() f4(); function f4() disp('Hello world'); 如果像这样将其扔到调试器中,则会在调用堆栈底部找到断点,该调用堆栈本身是从原始调试器会话启动的。 >> dbstop in f1 at 8 >> f1() 8 disp('Hello world'); K>> dbup In workspace belonging to f1>f3 at 6 K>> dbup In workspace belonging to f1>f2 at 4 K>> f1() 8 disp('Hello world'); K>> dbstack > In f1>f4 at 8 In f1>f3 at 6 In f1>f2 at 4 In f1 at 2 In f1>f4 at 8 In f1>f3 at 6 In f1>f2 at 4 In f1 at 2 K>> 进行dbquit(退出嵌套调试器会话)会使您回到原来的调用堆栈的中间。 K>> dbquit K>> dbstack In f1>f4 at 8 In f1>f3 at 6 > In f1>f2 at 4 In f1 at 2 K>> 如果您将dbcont从“ K >>”中移出,则控制流将从调用栈的底部恢复,该中断最初是在该断点处提出的,而不管K >>所关注的栈框架如何。您不能使用调试器来更改正在执行的主线代码的控制流。 更多&回答... |
![]() |
![]() |