abh*_*mar 5 c++ crash debugging matlab mex
我已经编译了一个c ++代码到MEX文件,但在调用这个MEX文件时,它崩溃了.它在MATLAB中给出以下错误消息:
检测到分段违规
我尝试在C++文件中使用try-catch在catch块中打印消息,比如
try {
//my code;
}
catch(std::exception &e)
{
mexPrintf(e.what());
mexEvalString("drawnow;");
return;
}
Run Code Online (Sandbox Code Playgroud)
但打印消息不起作用,代码仍然崩溃.
在查看Google时,大多数时候它指向MathWorks提供的某种形式的消息:http://www.mathworks.de/matlabcentral/newsreader/view_thread/25900
它指示设置环境变量"MATLAB_MEM_MGR=debug"
,但它没有解释如何使用它?有人可以解释一下吗?
首先,try/catch 不会捕获分段违规。它只捕获 C++ 异常,而不捕获像 sigsegv 这样的信号。
二、“用” MATLAB_MEM_MGR
:
MATLAB_MEM_MGR
为“debug”(如 Windows 上的命令提示符或 Unix 上的终端),如Q3.5所说,如果 MEX 函数通过(例如)写入超过 MATLAB 分配的内存块的末尾而损坏内存,则 MATLAB 将在释放该内存块时报告损坏情况。
您可能想尝试在调试器下运行 MEX 函数。本技术说明有几个链接描述如何在各种平台上执行此操作。
编辑:以前的链接已失效,这里是最新的文档页面。
归档时间: |
|
查看次数: |
2051 次 |
最近记录: |