我试图将现有的C ++代码包装到MATLAB可调用函数中。我正在使用Visual Studio 2013 to generate the MEX file。 MEX文件是正确创建的,我可以从MATLAB中调用它并来回传递参数而没有任何问题。
现在我想调试我的C ++逻辑,而我似乎无法让它工作。我已经创建了一个调用我的函数的m脚本,并且在调试时让Visual Studio运行MATLAB - 正如here所述。
当我按F5调试我的MEX文件时,Visual Studio运行MATLAB,然后非常快地退出调试模式,就像MATLAB进程终止一样。在之后几秒钟,MATLAB开始运行代码。就好像运行的MATLAB实例启动另一个实例并终止,使Visual Studio感到困惑。
如何调试MEX功能?
更新:显然,正如here所述,MATLAB正在这样做。添加-wait
参数会使Visual Studio等到脚本运行完毕,但我设置的断点不起作用 - 因为正在调试的进程不是加载DLL的进程。
答案 0 :(得分:3)
结果<MATLABROOT>\bin\matlab.exe
实际运行<MATLABROOT>\bin\w64\matlab.exe
。因此,如果我要求Visual Studio运行它,则会按预期触发断点。
在调试器下以这种方式运行MATLAB 很多比任何其他方式慢,但至少现在我可以调试我的代码。
答案 1 :(得分:2)
您也可以像往常一样运行MATLAB会话,然后将Visual Studio附加到正在运行的进程中。这在documentation中有更详细的解释。这是一个快速摘要:
matlab.exe
进程。