How can I pass control back to the MATLAB command prompt after keyboard command?
7 次查看(过去 30 天)
显示 更早的评论
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 个评论
Donna Calhoun
2017-12-10
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"?
dpb
2018-2-2
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.
回答(1 个)
per isakson
2016-4-21
编辑:per isakson
2016-4-21
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.  
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/174134/image.png)
4 个评论
per isakson
2016-4-21
编辑:per isakson
2016-4-22
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  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
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!