有没有办法使用Matlab Debugger调试编译的组件?

时间:2011-12-18 17:51:33

标签: debugging matlab dll com matlab-deployment

有没有一种方法可以调试我编译的Matlab组件,使用本机Matlab调试器,如Visual Studio“附加到进程”选项,或类似的东西?

我的意思是EXE独立文件,DLL,COM进程内服务器或.NET组件。

3 个答案:

答案 0 :(得分:6)

在能够逐行执行MATLAB代码的意义上无法调试它们,就像在编译之前使用MATLAB自己的调试器一样。 MATLAB部署产品采取的步骤之一是加密MATLAB代码(这样您可以在分发部署的组件时保留IP)。部署后在调试器中单步调试代码的能力将无法达到目的。

答案 1 :(得分:0)

我尝试使用类似的东西: 尝试   抓住我 waitbar(0,ME.message) 端

这是一个非常有效和通用的解决方案。

您可能希望将代码分解为多个部分并对每个部分进行调试以节省编译时间。

祝你好运, 担

答案 2 :(得分:-2)

您可以按照说明进行调试:

调试:

使用调试工具可以让你在执行中期停止你的程序,以检查变量的内容和其他可以帮助你找到程序错误的东西。 M文件程序在“断点”处停止。要创建断点,只需按F12键,光标所在行旁边会出现一个红点。您还可以单击M文件窗口左侧行号旁边的短划线,以获得相同的结果。

然后从菜单中按F5或Debug-> Run运行程序。它将在断点处停止,旁边有一个绿色箭头。然后,您可以使用“调试”菜单检查工作空间中的变量内容,步骤,继续或停止程序。要检查变量的内容,只需在工作区中键入其名称,但要注意:您只能查看您停止的文件中的变量值,这意味着您可能需要多个断点来查找源你的问题。有几种不同的方法可以从断点处移动程序。一种方法是逐行完成整个程序,输入所有被调用的函数。如果您不知道问题出在哪里,这是有效的。还有一种方法可以简单地逐步执行您当前停止的函数,一次一行,而不是逐行完成子函数,MATLAB将简单地为您提供这些函数的结果。

最后,请注意在保存M文件之前无法设置断点。如果更改了某些内容,则必须在断点“通知”更改之前保存。通过将点从红色变为灰色,在MATLAB中描述了这种情况。有时,你会保存,但点仍然是灰色的;当您在多个文件中有多个断点时会发生这种情况。为了解决这个问题(这真的很烦人),你必须继续“退出调试模式”,直到它变为灰色。一旦完全退出调试模式,您的文件将保存,您将准备开始另一轮调试。使用注释来帮助您调试代码。你想测试遗漏某些代码行的效果(例如,如果程序仍然返回Inf,如果你把它们取出),你可以注释掉代码。要执行此操作,请突出显示它,然后转到: 文字 - >评论

或按CTRL + R.这只会在每一行的前面放一个'%';如果该行已被注释掉,则会在其中添加另一个'%',因此当您取消注释它们时,注释行的模式不会改变。编译器将忽略注释行,因此效果将是程序在没有它们的情况下运行。 取消注释一行去 文字 - >取消注释 或者按CTRL + T. 注释的另一个用途是测试两个不同的可能代码集之间的区别来做某事(例如,你可能想测试使用ODE113而不是ODE45来解决微分方程的效果,所以你有一行每个人打电话。您可以通过注释一个并运行该程序来测试差异,然后取消注释并注释另一个,并再次调用该程序。

如何逃脱无限循环? MATLAB不能直接告诉你有一个无限循环,它确实试图给你一些提示。第一个是在你终止程序时。通过按CTRL + C终止它,MATLAB将给你一条消息,告诉你你停在哪条线上。如果您的程序运行很长时间,那么您停在的行很可能处于无限循环的中间。有时MATLAB甚至不会让你返回主窗口按CTRL-C。在这种情况下,您可能必须终止整个MATLAB过程。在此之后,在您怀疑为无限循环的循环中添加“暂停(0.001)”或类似的小值。每当MATLAB通过此指令时,您将能够(非常)短时间与MATLAB交互,例如,转到主窗口并按下CTRL-C,MATLAB能够响应您的命令。