Brett's Pick this week is dbmute and unmute, companion functions that facilitate code tweaking and debugging.
Those of you who read my colleagues' blog Ken & Mike on the MATLAB Desktop may have already been introduced to today's pick; it comes to us from fellow MathWorker and blogger Ken Orr (his first official submission--welcome to the File Exchange, Ken!).
Back in mid-July, Ken wrote a blog post on Muting Breakpoints. He described how he uses breakpoints to help him debug his code, and he wrote that he wanted the ability to quickly disable (and re-enable) those breaks. To solve the problem, Ken wrote, and showed the code for, dbmute and dbunmute. I adopted the functions immediately--they've quickly become an integral part of my own code development workflow. I also commented on that post, suggesting that these functions belong on the MATLAB Central File Exchange, and hinting about their destiny as "Picks of the Week." Good to my word, today's Pick honors Ken's submission.
One side note: Ken suggested in a final thought that it might be useful to create shortcuts to the functions:
I took it one step farther, and implemented a single shortcut that toggles my breakpoints:
Anyone care to venture a guess how I did that?
Get
the MATLAB code
Published with MATLAB® 7.8



Here’s how I would write the toggle shortcut:
s = dbstatus('-completenames'); mute = true; for i = 1:length(s) if (strcmp(s(i).expression,'false')) mute = false; break; end end if (mute) dbmute disp('Muting all breakpoints'); else dbunmute disp('Unmuting all breakpoints'); endHi Corbin,
Nice! My version simply stored the mute status in, and queried from, the appdata of the MATLAB root:
muteStatus = getappdata(0,'dbmuteStatus'); if isempty(muteStatus) || ~muteStatus setappdata(0,'dbmuteStatus',true); dbmute else setappdata(0,'dbmuteStatus',false); dbunmute endBut your version works well, too. If you’ll respond directly to my email…HINT:
with your snail mail address, I’d like to send you a small token of our appreciation!