我正在尝试编写我的Matlab调试步骤命令版本dbstep,即我想在一次调用中执行dbstep和其他一些操作.但是,放入dbstep函数不起作用:
% in file my_dbstep.m
function my_dbstep()
evalin('caller', 'dbstep');
Run Code Online (Sandbox Code Playgroud)
当我my_dbstep在调试会话中调用时,它就像我dbstep在函数内输入一样,而不是在调用者中输入.
还有其他解决方案吗?
我找到的解决方案是使用一个 mex 文件,每次我在调试模式下单步执行一行(使用这个新的 mex 文件)时,我可以从该文件中调用 Matlab 中的一个函数来执行我想要的操作,然后从 mex 中dbstep2调用dbstep:
// file dbstep2.c
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) {
mexCallMATLAB(0,NULL,0, NULL, "do_some_stuff");
mexCallMATLAB(0,NULL,0, NULL, "dbstep");
}
Run Code Online (Sandbox Code Playgroud)
就我而言,我do_some_stuff在 Matlab(无 GUI)中调试时使用该函数将击键发送到 vim,因此当前行在 vim 中打开的脚本中突出显示。当然,它可以用于任何其他用例。
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |