调试生成的 MEX 代码
在生成 C/C++ 代码或加速 MEX 函数之前,请通过生成和运行 MEX 函数来检查 MATLAB® 代码中的合规性问题。要了解如何对常见错误进行故障排除,请参阅使用 MEX 函数检查 MATLAB 代码中的问题。
此外,遵循以下最佳做法来调试 MEX 函数:
当您调用 MEX 函数时,向它传递您在原始 MATLAB 算法中使用的相同输入。不要把
coder.Constant或任何coder.Type类传递给 MEX 函数。您只能将这些类与codegen函数结合使用。要运行由 MATLAB Coder™ 生成的 MEX 函数,您必须有 MEX 函数所需的所有工具箱的许可证。例如,如果从使用 Computer Vision Toolbox™ 函数或 System object™ 的 MATLAB 算法生成 MEX 函数,则必须有 Computer Vision Toolbox 许可证才能运行 MEX 函数。
查看代码中包含的函数的参考页中的“扩展功能”部分。某些 MATLAB 函数的行为在生成的代码中有所不同。请参阅生成的代码和 MATLAB 代码之间的差异。
查看对使用
coder.ceval的外部 C/C++ 函数的调用。验证数据类型、输入和输出布局是否正确。MATLAB 默认使用列优先布局。升级 MATLAB 后,在使用新版本运行 MEX 函数之前,请先重新生成它们。
使用
disp或fprintf函数来检查 MEX 函数变量的内容。您也可以使用save函数将 MEX 函数变量保存到 MAT 或 ASCII 格式的文件中。请参阅Perform Data Read and Write Operations in Generated Code。使用 C/C++ 调试器调试 MEX 函数。在生成代码之前,通过使用启用 C/C++ 编译器调试模式参数启用 C/C++ 调试模式。或者,在命令行中使用
codegen命令与-g选项在调试模式下生成一个 MEX 函数。