通常在MATLAB中,我使用dbstop if error
启用“自动”调试。当发生错误时,该函数进入调试模式,我能够在命令窗口中查询变量并查看到底发生了什么。非常有用。
然而,当发生这种情况时,焦点会切换到编辑器。对我来说这似乎是违反直觉的;我们处于调试模式,所以我想知道发生了什么,而不是查看代码(我已经可以在相邻的窗口中看到)。我总是立即回到命令窗口。
所以我的第一个问题是:此时访问编辑器有什么意义吗?当我的脚本在编辑器中崩溃时,我可以做什么?
其次:如果我愿意,我可以更改MATLAB的默认行为以将焦点保持在命令窗口中吗?
答案 0 :(得分:3)
您可以使用调用堆栈来查看您是如何处理特定错误位置的。当然,您可以在命令窗口中使用dbup
和dbdown
,但在编辑器中更容易。
此外,在导致崩溃的代码的上下文中查看变量(及其值,使用鼠标悬停)对于理解错误的根本原因要比查看静态值要好得多。
答案 1 :(得分:3)
关于你的第二个问题:
如果您使用MATLAB的桌面环境,只需在“调试”菜单中取消选择“调试时打开文件”。
如果您在没有图形桌面的情况下使用MATLAB,则可以通过修改matlab.prf
文件来更改此首选项。此文件存储从GUI设置的首选项。上述菜单选项与下面描述的手动过程进行相同的更改。
注意:完全不支持编辑此文件。这样做需要您自担风险。
从MATLAB命令提示符
打开文件 >> edit([prefdir '/matlab.prf'])
或者在MATLAB中使用prefdir
命令查找目录,然后在您喜欢的任何编辑器中打开文件。
搜索一行
EditorGraphicalDebugging=Btrue
将其更改为
EditorGraphicalDebugging=Bfalse
如果该行不存在,请将其添加到文件中。
重启MATLAB。
答案 2 :(得分:2)
我只能回答你的第一个问题。
你可以在编辑器中做的事情: