此命令允许您检查当前实例的调试状态:
feature('IsDebugMode')
Run Code Online (Sandbox Code Playgroud)
例如:
K>> feature('IsDebugMode')
ans =
1
>> feature('IsDebugMode')
ans =
0
>>
Run Code Online (Sandbox Code Playgroud)
我认为这不一定完全回答你的问题,因为你需要通过一个不同的过程来访问它,但我希望这是有帮助的.
注意:这是一个未记录的功能,因此可能会消失或更改版本之间的行为.
matlab 中的计时器可以生成一个单独的线程来等待,在该线程中可以解决需要从当前 matlab 实例外部查看的问题。我们可以设置计时器来检查调试模式是否处于活动状态以及是否要执行某些操作。
检查调试模式是否处于活动状态以及如果处于活动状态则执行某些操作的示例函数:
function mycallbackfunction(~,~)
if feature('IsDebugMode') % undocumented thanks to CatzLoveJazz
load handel
sound(y,Fs)
Run Code Online (Sandbox Code Playgroud)
前两行是一个引人注目的示例,其他可能性是使用beep、 写入文件,或运行任何命令或函数。
evalin('base','stop(timerHandle)') % stop the timer
end
end
Run Code Online (Sandbox Code Playgroud)
可以修改此函数以评估“注意力吸引”一次,然后在调试模式不再处于活动状态时重置。目前,它依赖于停止然后手动重新启动计时器。
(注意:以前的版本有一个 else 但这是多余的,因为它在工作区繁忙时不会运行)
现在创建计时器对象。
timerTic=4; % how often the timer checks
timerHandle = timer();
timerHandle.startDelay = timerTic;
timerHandle.Period = timerTic;
timerHandle.ExecutionMode = 'fixedRate';
timerHandle.TasksToExecute = inf;
timerHandle.TimerFcn = @mycallbackfunction;
Run Code Online (Sandbox Code Playgroud)
并开始定时器调用
start(timerHandle)
Run Code Online (Sandbox Code Playgroud)
运行引人注目的线路后,计时器将自动停止。如果从未进入调试模式,计时器将继续运行,并且需要手动停止stop(timerHandle)
请记住在清除变量之前完成后运行delete(timerHandle)以删除对象timerHandle
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |