从 Python 调用时如何调试 MATLAB 脚本

How to debug MATLAB script when calling it from Python

我正在使用

从 python 调用 MATLAB 脚本
ml = matlab.engine.start_matlab()
output = ml.myMATLABscript(input1, input2)

该脚本在 MATLAB 中运行良好,但当我从 Python 调用它时,它遇到了 int vs double 问题。到目前为止,我一直在通过解释脚本崩溃时的错误消息来解决这个问题,但最好能看看具体发生了什么。为此,我希望能够逐行单步执行 MATLAB 代码,即使我是从 Python 调用它的。

事实证明这比我预期的要容易。只需以编程方式在 MATLAB 脚本中设置一个断点。例如:

dbstop if error

然后像以前一样从 Python 调用脚本。 MATLAB 编辑器将在指定断点处以调试模式打开。

这也可以在不编辑 MATLAB 脚本的情况下实现。在这种情况下,您需要使用 enginge 的 eval:

从 Python 设置 MATLAB 断点
ml = matlab.engine.start_matlab()
ml.eval(dbstop in myMATLABscript if error)
output = ml.myMATLABscript(input1, input2)

为了完整起见,来自 MATLAB's documentation

  • dbstop in file 在文件中的第一个可执行行设置断点。
  • dbstop in file at location在指定位置设置断点
  • dbstop in file if expression 在文件的第一个可执行行设置条件断点
  • dbstop in file at location if expression 在指定位置设置条件断点。