2015-06-22 20 views
5

Ich versuche, meine Version von Matlab debuggen Schritt Befehl dbstep zu schreiben, das ist, ich möchte Dsbstep und einige andere Dinge in einem einzigen Aufruf tun. Allerdings ist Putting dbstep in eine Funktion nicht:Aufruf dbstep von einer Funktion

% in file my_dbstep.m 
function my_dbstep() 
evalin('caller', 'dbstep'); 

Wenn ich rufe my_dbstep während in einer Debug-Sitzung, es als verhält, wenn ich dbstep innerhalb der Funktion eingegeben hat, und nicht in den Anrufern.

Gibt es eine andere Lösung?

Antwort

1

Die Lösung, die ich gefunden habe, ist eine mex-Datei zu verwenden, von der ich eine Funktion in Matlab aufrufen kann, jedes Mal, wenn ich eine Zeile im Debug-Modus (mit dieser neuen dbstep2 Mex-Datei), gefolgt von a rufen dbstep vom mex:

// 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"); 
} 

in meinem Fall verwende ich die do_some_stuff Funktionstaste Hüben vim zu senden, während in Matlab (kein gui) Debuggen, so die aktuelle Zeile im Skript markiert ist, die geöffnet wird, in vim. Natürlich kann es für jeden anderen Anwendungsfall verwendet werden.

Verwandte Themen