如何调试 Matlab 引擎 C API?

Posted

技术标签:

【中文标题】如何调试 Matlab 引擎 C API?【英文标题】:How to debug Matlab engine C API? 【发布时间】:2016-03-21 14:34:48 【问题描述】:

引擎 API 允许使用 C 调用 MATLAB

http://www.mathworks.com/help/matlab/calling-matlab-engine-from-c-c-and-fortran-programs.html

调试界面的最佳做法是什么?我们能否以某种方式“打开”由 MATLAB IDE 中的 API 创建的 MATLAB 会话,并调试我们通过 API 发送到会话的 MATLAB 代码?

我可以将 MATLAB 代码状态打印到日志文件中进行调试,但这效率不高。

【问题讨论】:

我会确保 MATLAB 端可以正常工作(使用预期输入进行单元测试);这可以完全在 MATLAB 中完成。对于 C 端,请确保 MATLAB API 的输入只是预期的。 @zeeMonkeez 这是一个组合解决方案,虽然能够通过连接 C 和 Matlab 一起调试会更方便。 【参考方案1】:

愚蠢的解决方案是打开 gdb/visual studio 并附加到正在运行的 Matlab 进程。如果你很幸运,Matlab 只是加载你的代码而不做任何更改,然后你可以像在任何其他程序中一样在你的代码中放置断点。

我之前在 Visual Studio 中使用其他程序(不是 matlab)完成了此操作,它的工作频率令我惊讶。

【讨论】:

这可以让我们调试 Matlab 脚本吗?我认为gdb只能调试C代码,不能调试我们通过engineEvalString发送给Matlab的脚本。 对不起,从你的问题中不清楚你想做什么。如果你只是想调试 matlab 代码,为什么不直接使用标准的 matlab 调试器呢? 在 linux 中,C 引擎 API 创建一个不同的 matlab 会话。我不确定如何在 Matlab 调试器中找到或打开该会话。 不能将生成的代码输出到文件中手动运行吗?在不检查生成的代码的情况下编写代码生成器似乎非常困难。

以上是关于如何调试 Matlab 引擎 C API?的主要内容,如果未能解决你的问题,请参考以下文章

图像去噪基于matl中值+均值+Lee+Kuan图像滤波含Matlab源码 1179期

C中的Matlab引擎函数返回零

在C语言编程中,如何调用MATLAB的绘图功能?

加速 Matlab 引擎调用

matlab借助vs调试C程序

3.MATLAB界面介绍