Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

使用 App 检查运行时问题

在为 MATLAB® 代码生成独立的 C/C++ 代码之前,最佳做法是根据入口函数生成 MEX 函数。运行 MEX 函数有助于检测和修复运行时错误,这些错误在生成的代码中很难诊断。它还帮助您确认 MEX 提供与原始 MATLAB 代码相同的功能。

MATLAB Coder™ 中,要为您的 MATLAB 代码生成并运行 MEX 函数,请执行检查运行时问题步骤。

  1. 编写调用入口函数的函数或脚本。您可以使用在定义输入类型步骤中用来自动定义输入类型的相同测试文件。

  2. 完成选择源文件定义输入类型步骤。在定义输入类型页上,点击下一步以转到检查运行时问题步骤。

  3. 指定测试文件。在前面的步骤中,如果您自动生成输入类型,则 App 将使用该测试文件填充对话框。您可以输入调用入口函数的代码,而不是测试文件。然而,提供测试文件是最佳做法。

  4. 点击检查问题。该 App 根据您的 MATLAB 函数生成 MEX 函数。它运行您指定的测试,将对 MATLAB 入口函数的调用代换为对生成的 MEX 函数的调用。该 App 在错误选项卡上报告 MEX 生成或编译错误。该 App 在测试输出选项卡上报告 MEX 运行时错误。

  5. 如果 App 报告错误,要编辑 MATLAB 代码,请点击查看错误

  6. 修复问题后,要重新运行测试,请点击检查问题

MATLAB Online™ 不支持 MATLAB Coder

收集 MATLAB 代码行执行计数

当 App 运行 MEX 函数时,它会计算与 MATLAB 代码行对应的 MEX 代码的执行次数。如果 App 未检测到问题,您可以查看这些代码行执行计数。代码行执行计数有助于您了解测试对 MATLAB 代码的执行情况。您可以识别死代码和需要进一步测试的代码节。请参阅Collect and View Line Execution Counts for Your MATLAB Code

禁用并行循环的 JIT 编译

默认情况下,为了加速 MEX 函数的生成,App 尝试使用即时 (JIT) 编译。JIT 编译与某些代码生成功能和选项不兼容,例如自定义代码和 OpenMP 库的使用。如果 App 无法使用 JIT 编译,它会改为生成 C/C++ MEX 函数。如果您的代码使用 parfor,并且尽可能启用 OpenMP 库设置为,则 App 使用 JIT 编译并将 parfor 循环视为 for 循环。如果您要检查运行时问题步进到并行运行 for 循环,请禁用 JIT 编译:

  1. 检查运行时问题页上,点击设置

  2. 所有设置选项卡上,将在检查运行时问题时使用 JIT 编译设置为

相关主题