【发布时间】:2018-06-20 13:56:23
【问题描述】:
我知道在 Linux 上使用 gdb 调试 MATLAB mex 文件的过程,如下所述:https://www.mathworks.com/help/matlab/matlab_external/debugging-on-linux-platforms.html
此过程涉及通过命令行启动 MATLAB
matlab -Dgdb
然后从 gdb 控制台运行 MATLAB
(gdb) r -nojvm
在 gdb 中一次,以及在运行 mex 时中断的其他一些步骤。
但是,我想通过 Python 的 gdb API 对我的 gdb 调试进行更高级的封装。
在 Python 中包装 gdb API 的过程通常以如下方式开始,以调试名为 foo 的程序
import gdb
gdb.execute('file foo')
gdb.execute('run')
我不确定是否可以将相同的概念应用于调试 MATLAB。我确信它是可能的,因为像 gdbgui 这样的 gdb 前端是用 Python 构建的,并且可以启动
matlab -Dgdbgui
但我不确定如何为 gdb 调整类似于我自己的 Python 包装器的东西?
【问题讨论】:
-
事实证明 /usr/bin/matlab 只是一个外壳脚本,它包装了 MATLAB 二进制文件的执行。这解释了使用 -Dgdb 调用 MATLAB 进行调试的奇怪方式。我将调试 shell 脚本以找到通过调试器调用 MATLAB 的实际语法,这(理论上)应该反过来可以通过 Python 中的 gdb API 包装器轻松扩展
标签: matlab debugging gdb mex gdb-python