MATLAB调试:如何更智能地停止带有特定条件的代码?

12

当我调试长篇数值代码时,通常我想要在发生某些情况或在特定迭代中查看函数变量值。一般我会这样做:

function banana(platano)

% long stuff here

for ii=1:123456789
     % tons of maths
   if ii==45612
      stophere=1;    % I put a break point in this line of code
   end
end

然而,这需要我在函数中编写代码进行调试,看起来不太好。有没有更聪明的方法来解决这个问题?

1个回答

15

其中一种方法是使用条件断点。您可以通过右键单击行号并选择 "设置条件断点..." 选项来添加它们。

例子:

enter image description here

如本答案评论所述,如果想要在命令行中设置它,可以使用以下命令:

dbstop in filename at linenumber if condition 

例如:

dbstop in banana at 6 if ii==454345433

请注意,在行号处以及if条件是可选的。

更多内容

调试器的另一个有用工具是使用dbstop if error,如果有错误发生,则可以中断程序执行,正如这个Q&A所展示的那样。

感谢@Dev-il向我展示了这个技巧!


4
我完全不知道这一点。我一直都是手动放置“if”语句并暂停代码。顺便说一下,如果你能展示如何通过命令行和命令提示符来实现这一点,那就更好了。这可行吗? - rayryeng
1
@rayryeng dbstop in file if condition → 在文件中的条件下停在某个位置 - Dev-iL
4
@rayryeng dbstop在第8行的banana函数中,当ii等于454345433时停止调试。 - Luis Mendo
3
Ander,考虑添加如何通过命令行完成此操作的内容,以使您的帖子更完整。我们中的一些人(例如我)不使用MATLAB的编辑器。 - rayryeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接