3

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

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

4

3 回答 3

6

您不能像在编译之前使用 MATLAB 自己的调试器那样逐行遍历 MATLAB 代码来调试它们。MATLAB 部署产品采取的步骤之一是加密 MATLAB 代码(这样您就可以在分发已部署的组件时保留您的 IP)。部署后在调试器中单步执行代码的能力将违背其目的。

于 2011-12-19T00:25:59.047 回答
0

我尝试使用类似的东西:try catch ME waitbar(0,ME.message) end

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

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

祝你好运,丹

于 2016-09-14T07:19:54.887 回答
-2

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

调试:

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

然后按 F5 或菜单中的 Debug->Run 运行程序。它将在断点处停止,旁边有一个绿色箭头。然后,您可以使用“调试”菜单检查工作区中变量的内容、单步执行、继续或停止程序。要检查变量的内容,只需在工作区中键入它的名称,但要注意:您只能查看您停止的文件中的变量值,因此这意味着您可能需要多个断点才能找到源你的问题。有几种不同的方法可以从断点开始在程序中移动。一种方法是逐行遍历整个程序,输入每个调用的函数。如果您不知道问题出在哪里,这很有效。还有一种方法可以简单地单步执行您当前停止的功能,

最后,请注意在保存 M 文件之前不能设置断点。如果您更改某些内容,则必须在断点“通知”您的更改之前保存。这种情况在 MATLAB 中通过将点从红色变为灰色来描述。有时,您会保存,但点仍然是灰色的;当您在多个文件中有多个断点时会发生这种情况。要解决这个问题(这真的很烦人),您必须继续“退出调试模式”,直到它变成灰色。一旦您完全退出调试模式,您的文件将保存,您将准备好开始另一轮调试。使用注释来帮助您调试代码。如果您想测试省略某些代码行的效果(例如,查看如果您删除它们,程序是否仍然返回 Inf),您可以注释掉代码。去做这个,

或按 CTRL+R。这将简单地在每一行前面放置一个“%”;如果该行已被注释掉,它将在其中放置另一个“%”,因此当您取消注释它们时,注释行的模式不会改变。编译器将忽略注释行,因此程序在没有它们的情况下运行。要取消注释一行,请转到文本 -> 取消注释或按 CTRL+T。注释的另一个用途是测试两组不同的可能代码做某事之间的差异(例如,您可能想要测试使用 ODE113 而不是 ODE45 来求解微分方程的效果,所以你会有一行调用每个)。您可以通过注释掉一个并运行程序来测试差异,然后取消注释那个并注释掉另一个,然后再次调用该程序。

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

于 2013-06-18T06:41:05.853 回答