有没有一种方法可以调试我编译的 Matlab 组件,使用本机 Matlab 调试器,如 Visual Studio“附加到进程”选项或类似的东西?
我的意思是 EXE 独立文件、DLL、COM 进程内服务器或 .NET 组件。
有没有一种方法可以调试我编译的 Matlab 组件,使用本机 Matlab 调试器,如 Visual Studio“附加到进程”选项或类似的东西?
我的意思是 EXE 独立文件、DLL、COM 进程内服务器或 .NET 组件。
您不能像在编译之前使用 MATLAB 自己的调试器那样逐行遍历 MATLAB 代码来调试它们。MATLAB 部署产品采取的步骤之一是加密 MATLAB 代码(这样您就可以在分发已部署的组件时保留您的 IP)。部署后在调试器中单步执行代码的能力将违背其目的。
我尝试使用类似的东西:try catch ME waitbar(0,ME.message) end
这是一个非常有效和通用的解决方案。
您可能希望将代码分解为多个部分并调试每个部分以节省编译时间。
祝你好运,丹
您可以按照说明进行调试:
调试:
使用调试工具可以让您在执行过程中停止程序,以检查变量的内容和其他可以帮助您发现程序错误的内容。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 进行交互,例如