![]() |
在Matlab中调试
我喜欢使用命令在matlab中进行调试。一些问题:
[LIST=1][*]如果选择一个堆栈,是否可以直接跳转到特定的堆栈,而不是使用dbup和dbdown将一个堆栈移动到另一个堆栈?[*]跳转到中间堆栈后,如果我执行一些命令,为什么它会自动返回到最里面的堆栈?我是否可以一直留在中间堆栈,直到发出命令离开另一个堆栈?[/LIST] [B]回答:[/B] 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 >>所关注的栈框架如何。您不能使用调试器来更改正在执行的主线代码的控制流。 [url=https://stackoverflow.com/questions/2146931]更多&回答...[/url] |
所有时间均为北京时间。现在的时间是 04:55。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.