mex文件崩溃,如何在MATLAB中使用MATLAB_MEM_MGR
mex file is crashing, how to use MATLAB_MEM_MGR in matlab?
我已经编译了一个c++代码到MEX文件,但在调用这个MEX文件时,它崩溃了。它在MATLAB中给出以下错误消息:
检测到分段违规
我尝试在C++文件中使用try-catch来打印catch块中的消息比如
try {
//my code;
}
catch(std::exception &e)
{
mexPrintf(e.what());
mexEvalString("drawnow;");
return;
}
但是打印消息不起作用,代码仍然崩溃。
看看谷歌,大多数时候它都指向MathWorks给出的某种形式的信息:http://www.mathworks.de/matlabcentral/newsreader/view_thread/25900
其指示设置环境变量CCD_ 1,但它没有解释如何使用它?有人能解释一下吗?
首先,try/catch不会捕获分段冲突。它只捕获C++异常,而不是像sigsegov这样的信号。
第二,"使用"MATLAB_MEM_MGR
:
- 在操作系统外壳中将环境变量
MATLAB_MEM_MGR
设置为"debug"(如Windows上的命令提示符或Unix上的终端) - 从同一个shell运行MATLAB
- 从MATLAB中正常运行MEX函数
正如常见问题解答的Q3.5所说,如果MEX函数通过(例如)写入超过MATLAB分配的内存块的末尾而损坏内存,则MATLAB将在释放内存块时报告损坏情况。
您可能需要尝试在调试器下运行MEX函数。这篇技术说明有几个链接,描述了如何在各种平台上做到这一点。
编辑:上一个链接已失效,这是最新的文档页面。
删除mexEvalString("drawnow;")
。我花了5个小时才弄明白。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 有可能在Armadillo中复制MATLAB circshift方法吗
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- MATLAB to C++: csvread() not supported by MATLAB Coder
- 加载由 MATLAB Coder 生成的带有函数的 DLL,该函数调用外部函数
- MATLAB:跟踪imufilter对象中的状态变化
- 如何将 c++ 中的客户端 TCP 的替身列表发送到 Matlab 中的 TCP 服务器?
- 将三角函数的正确值与matlab进行比较
- 连接 MATLAB 和 Visual Studios 的问题
- 如何将C++连接到 Matlab
- 如何发送 Mat H=findHomography 返回 Matlab
- 如何在C++中编写 MATLAB fix(X) 函数?
- 提供变量作为 MATLAB 系统命令的输入参数,以便C++可执行文件
- 有没有更好的方法可以使用特征/C++实现 matlab 的逻辑索引?
- 当我运行MEX文件时,MATLAB崩溃
- 从 MATLAB 到 C++:相当于带有选项 'remove' 的 bwmorph
- MATLAB的imfinfo in openCV
- 将C++中的多个参数传递给MatLab共享库函数
- 将 matlab 数组(MAT-文件)转换为C++数组
- 数组数据以错误的方式遍历 Python/Matlab