调试Visual Studio中的mex函数
Debug a mex function in Visual Studio
我试图将现有的c++代码包装成MATLAB可调用函数。我使用Visual Studio 2013来生成MEX文件。MEX文件创建正确,我可以从MATLAB调用它并来回传递参数,没有任何问题。
现在我想调试我的c++逻辑,但我似乎不能让它工作。我已经创建了一个调用我的函数的m脚本,并在调试时使用Visual Studio运行MATLAB -如这里所述。
当我按F5调试我的MEX文件时,Visual Studio运行MATLAB,然后很快退出调试模式,好像MATLAB进程终止了。几秒钟之后, MATLAB开始运行代码。这就好像我正在运行的MATLAB实例启动另一个实例并终止,使Visual Studio感到困惑。
如何调试我的MEX函数?
更新:显然MATLAB正在这样做,如下所述。添加-wait
参数使Visual Studio等待,直到脚本完成运行,但我设置的断点不起作用-因为正在调试的进程不是加载DLL的进程。
原来<MATLABROOT>binmatlab.exe
实际上运行<MATLABROOT>binw64matlab.exe
。因此,如果我要求Visual Studio运行它,断点将按预期触发。
在调试器下以这种方式运行MATLAB是很多比任何其他方式慢,但至少现在我可以调试我的代码。
您还可以像往常一样运行MATLAB会话,然后将Visual Studio附加到正在运行的进程中。这在文档中有更详细的解释。下面是一个简短的摘要:
- 打开调试符号编译源mex文件
- 在Visual Studio中打开源C/c++文件,并设置断点。
- 启动正常的MATLAB会话。然后从Visual Studio中,附加到正在运行的
matlab.exe
进程。 最后从MATLAB中,运行mex -函数。你应该在暂停执行的情况下到达断点。
相关文章:
- 索引和访问 mex 函数中单元数组和矩阵的元素
- 创建 Matlab MEX 函数时,我是否将 mexFunction 放在 c++ 头文件或源文件中
- 从MEX函数中清除MATLAB命令窗口
- 如何将整数值作为 mex 函数的输入传递?
- 如何使用 Boost 库构建 MEX 函数
- 如何在多线程 MEX 函数中打印到控制台?
- 在 matlab 中编写一个非常基本的 mex 函数
- 在mex函数中返回双指针2D矩阵
- 如何从mex函数返回矩阵结构
- 无法解析 MEX 函数 Eclipse
- 如何在 Matlab 中分析一个 MEX 函数
- 为什么此 MEX 函数会产生意外结果
- 从Matlab调用的Mex函数和数值差分
- 在mex函数中使用OpenCV:编译后出错
- 如何在 MEX 函数运行时制作它 printf?
- 使用c++ mex函数从matlab中获取输入参数
- Matlab在多次调用mex函数后没有响应
- Mex函数比相同的c++代码更快
- C-Mex函数和共享内存的多个实例
- 如何访问传递给MEX函数的矩阵成员