【问题标题】:Preventing a MEX file from crashing in MATLAB防止 MEX 文件在 MATLAB 中崩溃
【发布时间】:2014-07-06 00:28:47
【问题描述】:

我有一个 MEX 文件,我从其他人那里“借来”来帮助我编写半自动核检测算法。问题是 MEX 文件偶尔会导致分段错误。但是,如果代码第二次使用相同的参数运行,那就没问题了。

我希望有一种用于 MEX 文件的 try/catch 成语,但是在我星期六的大部分时间都在寻找一些东西之后,我找不到任何东西。

在这个问题上的任何帮助都会很棒!否则,我将不得不将 .cpp 移植到 MATLAB 中(大约 10,000 行使用数百个依赖项:-()。

【问题讨论】:

  • 而且您不希望任何代码与核相关代码崩溃。它可能会引发战争!
  • 无效代码不仅不会导致段错误,还可能会修改您的 Matlab 进程的随机内存地址,接受无法可靠检测的错误是个坏主意!
  • 你真的别无选择,只能修复代码。正如@Daniel 提到的,并非每个错误都会导致可捕获的异常。它同样可能会无法察觉地破坏 MATLAB 进程地址空间的其他部分。

标签: c++ matlab crash mex


【解决方案1】:

您使用的是哪个平台?有一些方法可以帮助调试您的 MEX 文件。每当出现分段错误时,您都可以使用 IDE 告诉您它在代码中的哪个位置崩溃了。

以下是 Mac OS 的使用说明:http://www.mathworks.com/help/matlab/matlab_external/debugging-on-mac-platforms.html

这里是 Linux 的说明:http://www.mathworks.com/help/matlab/matlab_external/debugging-on-linux-platforms.html

以下是适用于 Windows 的说明:http://www.mathworks.com/help/matlab/matlab_external/debugging-on-microsoft-windows-platforms.html

注意:反对将 OP 转至场外链接以帮助解决他或她的问题。我通常在我的帖子中包含大部分答案,并提供链接作为参考。因为您没有告诉我您使用的是什么平台,所以我不会为所有平台编写解决方案,因为那样会花费太多时间。因此(我祈祷链接长期稳定),您可以参考适合您平台的链接。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    相关资源
    最近更新 更多