1

我有一个使用 的 Simulink 模型s_function,它是一个mexw32文件。该s_function块也使用.lib模块。现在,当我尝试在模拟结束之前运行模型时,Matlab 崩溃并且命令窗口中没有任何错误。如果 Matlab 崩溃,我有哪些调试选项?

4

2 回答 2

1

我不了解 Simulink 或 S-Function(从未使用过它们),但通常当 MEX 文件出现段错误时,MATLAB 大部分时间都会从中恢复,显示堆栈跟踪并将您置于“您需要重新启动 MATLAB”命令提示符模式。您会在系统%TMP%文件夹中找到故障转储和错误日志文件。

正如其他人所说,如果您可以访问 MEX 函数的源代码,请使用调试符号重新编译它,将调试器附加到 MATLAB,在调试器中放置断点,并通过从 MATLAB 调用它来启动 MEX 函数。进入 C 代码后,逐步调试它的代码,直到找到问题所在。

这是相关文档页面,更详细地描述了此过程。


您提到您的 MEX 可执行文件链接到外部库。因此,您可能还想检查问题的根源。

于 2013-08-23T20:21:11.787 回答
1

这是导致 seg-fault 的错误编写的 S-Function 的典型行为。使用以下概述的步骤对其进行调试:http: //www.mathworks.com/support/solutions/en/data/1-3KK6RK/

于 2013-08-23T13:22:07.977 回答