MATLAB Answers

K E
0

How can I pass control back to the MATLAB command prompt after keyboard command?

K E
さんによって質問されました 2016 年 4 月 20 日
最新アクティビティ dpb
さんによって コメントされました 2018 年 2 月 2 日
I am debugging some code and have inserted a keyboard command into a loop. The code generates a figure, then when it hits the keyboard command control is passed to the editor (if I start typing, text appears in the code). Instead I would like to pass control to the command window after the keyboard command (if I start typing, text would appear at the command prompt). I tried using commandwindow before the keyboard command, but that did not seem to override the keyboard command's default of passing control to the code. What do you suggest?
for i = 1:50
figure;
commandwindow;
keyboard;
end

  2 件のコメント

Before version 2017a, the script below would immediately return control to the prompt. But starting with 2017a, this script returns control to the editor the first time the keyboard statement is hit; the second time, though, control is returned to the prompt.
This is really annoying, because we use this feature in a library routine. As the OP pointed out, immediately typing upon hitting 'k' (in the example below) edits the library file (our 'key_test.m') file. One has to then undo any typing in the library file that was inadvertently edited, then click to focus on the command window.
% key_test.m
inp = 'k';
while(strcmp(inp,'k'))
inp = input('Input k or q : ','s');
switch inp
case 'k'
keyboard;
case 'q'
return
end
end
Is there any chance this will be fixed? Or is this now a "feature"?
While some age on it; issues still abound...
R2016b/Win 7 (and I think earlier are same) when the breakpoint in editor is reached focus is switched to the editor window while the debug prompt appears in the command window. Invariably, one wants focus in the command window but typing as noted above immediately destroys the existing file.
To make matters even worse, now a CTRL-Z to undo will go PAST the changes made to those prior to the previous SAVE so you can actually undo previous corrections.
All in all, a complete cock-up and why, in general, tended to not use the Matlab editor/debug facility nearly as much as could.

サインイン to comment.

1 件の回答

Answer by per isakson
on 21 Apr 2016
Edited by per isakson
on 21 Apr 2016

I failed to make my system, R2016a on Win7, behave as you describe. On the contrary it behaves exactly as you want it to do.
The command, keyboard, makes Matlab switch to debug-mode and if I start typing text it appears in the command window after the prompt, K>>. When I move the cursor over the editor window it switches to the spinning wheel. Clicking in the editor allows me to type code. &nbsp

  4 件のコメント

You are perfectly right regarding my example! I was too quick to jump into conclusions.
I would call this a bug and report to tech support. It cannot possibly be an intended behavior.
Now I have tried your example with commandwindow.
I just typed cssm and then dbcont three times without touching the mouse. Same behavior when I started with&nbsp Run Selection. This example shows expected and wanted behavior on my system, R2016a on Win7.
>> cssm
K>> dbcont
K>> dbcont
K>> dbcont
>>
where
function cssm()
for jj = 1:3
figure;
commandwindow
keyboard
end
end
If you are getting the desired behavior (control passed to the command window) on R2016a, and I am not on R2015b/Win 7, I will see if this will be fixed by updating my version.

サインイン to comment.



Translated by