如果停止
今天的帖子的来源肖恩·德Wolski,我的一个同事应用工程师。你可能会认出他来MATLAB的答案和选择的博客!
你曾经想要的MATLAB暂停在调试模式下当满足一定条件时?也许当一个特定的题目文件从一个目录读取或迭代为循环,产生一个意想不到的结果吗?也许这为循环迭代几十或几百次迭代的问题出现,你不想一步一步走过在调试模式?
在这篇文章中,我们将调查几个不同的方法来处理这个问题。
内容
键盘
我正在跟一个MATLAB用户最近的优点键盘我不是一个大风扇的函数。键盘拉你进入调试模式一旦遇到。他们声称这样难以调试在满足特定的条件。
这是一个简单的示例场景。厘米是摄影师图片:
imshow (CM)
这是一个简单的算法显示有多少像素比中的每个像素值uint8范围的255年[0]。
xg = 0 (256);为2 = 0:255 xg (2 + 1) = (CM(:) > 2)总和;结束情节(0:255 xg) ylabel (“像素大于X”)轴紧
迭代125左右似乎给我问题;我期望曲线是积极的到255年。
我想看看发生了什么在后续迭代125和。一种方法是在计算行断点,点击运行,然后点击继续按钮125次希望我不要在节奏和不小心跳过它。这有一些明显的缺点,它没有规模和耗费时间。
该方法与键盘看起来像这样:
xg = 0 (256);为2 = 0:255如果2 = = 125键盘结束结束
现在在125迭代,我们进入if语句,可以在调试模式下进入区域的问题。这很简单,是一种安全,体面的解决方案。然而,它需要改变代码来调试它,需要再做一次改变我们固定的错误。
DBSTOP……
如果我们可以停止什么?你可以!dbstop,功能潜在的断点,支持广泛的金宝app条件断点。
这些可以从断点菜单中设置断点或编辑选项卡dbstop直接。这是相同的代码封装在一个函数调用badForLoop。
函数badForLoop (CM) xg = 0 (256);为2 = 0:255 xg (2 + 1) = (CM(:) > 2)总和;结束情节(0:255 xg) ylabel (“像素大于X”)轴紧结束
从断点设置菜单中,选择“设定状态”,光标在直线上你想停止。
然后输入你的条件;任何有效的MATLAB代码将在这里工作。
以编程方式设置相同的断点:
dbstop在badForLoop在4如果(2 = = 125)
badForLoop(厘米);
测试和清理
如果你认为你有一个修复,您可以禁用断点没有清理它通过点击黄色断点(X将会出现指示它禁用)。如果问题解决了,再次点击断点会清楚或者你可以通过右击再允许它。可以从菜单中结算可以用dbclear。
的类似的工作流程键盘将强调选择和评论到“禁用”,然后删除清除。
这个玩具的修复问题是图像存储为一个int8射程(-128 127)而不是一个uint8与范围255年[0]。
奖金
此外,dbstop有一些预定义的停止条件包括错误,警告,或如果nan或正遇到。如果你还没有发现dbstop如果错误然而,我强烈建议给它一试。当一个错误发生时,它停止,您可以查看世界的状态时发生错误。
评论
你有任何调试战争故事,这些技巧可以帮助吗?其他用途键盘命令吗?让我们知道在这里。
- 类别:
- 工具
评论
留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。