C++ mex文件正在崩溃,如何在MATLAB中使用MATLAB_MEM_MGR?
我已经编译了一个C++代码到MEX文件,但是调用这个MEX文件时,它崩溃了。 它在MATLAB中给出以下错误消息: 检测到分段冲突C++ mex文件正在崩溃,如何在MATLAB中使用MATLAB_MEM_MGR?,c++,matlab,debugging,crash,mex,C++,Matlab,Debugging,Crash,Mex,我已经编译了一个C++代码到MEX文件,但是调用这个MEX文件时,它崩溃了。 它在MATLAB中给出以下错误消息: 检测到分段冲突 我尝试使用TestCcatch in C++文件在catch块中打印消息 像 但是打印消息不起作用,代码仍然崩溃 看看谷歌,大多数时候它都指向MathWorks给出的某种形式的信息: 指示设置环境变量“MATLAB\u MEM\u MGR=debug”, 但它没有解释如何使用它?有人能解释一下吗?首先,try/catch不会捕获分段冲突。它只捕获C++异常,而不是像
我尝试使用TestCcatch in C++文件在catch块中打印消息 像
但是打印消息不起作用,代码仍然崩溃 看看谷歌,大多数时候它都指向MathWorks给出的某种形式的信息: 指示设置环境变量“MATLAB\u MEM\u MGR=debug”,但它没有解释如何使用它?有人能解释一下吗?首先,try/catch不会捕获分段冲突。它只捕获C++异常,而不是像SIGSEVV这样的信号。p> 第二,要“使用”
MATLAB\u MEM\u MGR
:
MATLAB_MEM_MGR
设置为“debug”编辑:上一个链接已失效,下面是最新的链接。删除
mexEvalString(“drawnow;”)
。我花了5个小时才弄明白 嗨,我可以解决这个问题。我因为输入格式错误而崩溃,错误的格式导致Device by zero。在发布此消息之前,我曾尝试使用cpp调试代码,但无法捕获它。正如我提到的,我试着使用try-catch、printing等,但没有任何帮助。此外,我从未想过崩溃可能是由devide by zero造成的,所以我所做的一切都是为了看看我是否正在尝试访问额外的内存。无论如何,谢谢。
try {
//my code;
}
catch(std::exception &e)
{
mexPrintf(e.what());
mexEvalString("drawnow;");
return;
}