奇怪的MEX文件行为

时间:2011-10-03 04:50:27

标签: c debugging matlab crash mex

发生了一些奇怪的事情。我用MATLAB R2011创建了一个MEX文件,然后用Visual Studio 2010编译它。

我可以正确使用工作区中的MEX文件。 然后,我在MATLAB m文件中使用MEX文件(多次调用MEX文件)。当我试图运行它时,MATLAB崩溃并问我关闭。

尝试分析错误,我设置了断点,但是当我在m文件中放置断点时,一切都是正确的。实际上我运行所有m文件的方法是在函数末尾放置一个断点并运行正常,我也可以完成所有m文件而不会出错。

但是当我尝试在没有断点的情况下运行它时,MATLAB崩溃......

起初我认为它可能是内存,但为什么它可以正确使用断点?

如果你能给我一个解决这个问题的线索,我将不胜感激。

提前致谢

杰西卡

2 个答案:

答案 0 :(得分:0)

我也认为这是一个记忆问题。

也许,当您通过调试器启动mex文件时,内存的处理方式不完全相同,或者在函数返回后发生问题。

您应该尝试使用this environment启动matlab以方便调试。

请注意,在错误的Mex功能后,内存损坏会导致Matlab崩溃。 这意味着您可能正在调试错误的功能。

如需进一步的帮助,我需要查看您的代码;)

答案 1 :(得分:0)

对我来说听起来像是记忆问题。正如Laurent所提到的,一些代码会有所帮助。

如果你可以重现崩溃,我建议调试c代码本身。确保运行mex文件的调试版本,在代码中设置断点,从Visual Studio附加到Matlab进程(ALt + Ctrl + p),然后从Matlab调用mex文件。