# A great utility for debugging5

Posted by Brett Shoelson,

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

Corbin Holland replied on : 1 of 5

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');
end

Brett replied on : 2 of 5

Hi 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
end


But your version works well, too. If you’ll respond directly to my email…HINT:

char(cumsum([98 16 -13 15 0 -70 69 -11 7 -10 7 7 -4 -1 -46 45 -12 19 -12 15 -8 3 -7 8 -69 53 12 -2]))


with your snail mail address, I’d like to send you a small token of our appreciation!

Eric replied on : 3 of 5

Brett, Does you shortcut icon change depending on the mute status – green when unmuted, red when muted?

Eric replied on : 4 of 5

Brett, Also, do you need to be an Admin on the machine for

setappdata(0,'dmbmute',true);


to work?

Brett replied on : 5 of 5

Hi Eric,
Thanks for the questions. No, my icon doesn’t change colors; I don’t think there’s a documented way to implement that. (Though if someone can demonstrate that I’m wrong in that regard, I’d be _most_ interested!) The picture on top (above) was from Ken’s blog (Ken & Mike on the MATLAB Desktop). Ken chose to implement two buttons. One can easily be red, the other green. I opted for a toggle instead (lower picture). It’s always red.

And no, setting the appdata does not require administrative privileges. That’s just core MATLAB speak! (Read the doc entry for |setappdata| for more on that.)

Cheers!
Brett

These postings are the author's and don't necessarily represent the opinions of MathWorks.