Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Toggle "Break when an exception is thrown." using macro or keyboard shortcut

Edit: Visual Studio 2015's new exception window is so much faster than the old dialog that I no longer care as much about using a keyboard shortcut for it.

Is there a macro or keyboard shortcut that will toggle "break when an exception is thrown" without using the GUI?

Opening the dialog with ctrl+alt+e and checking the "Common Language Runtime Exceptions" "Thrown" box then clicking OK is simple enough, but this is something I do a lot. I would rather have a keyboard shortcut for this.

This question is a duplicate of Any have a Visual Studio shortcut/macro for toggling break on handled/unhandled exceptions?

However, the poster accepted an answer that doesn't really work, and I would really like an answer that does work.

The answer in the duplicate question is not acceptable because it toggles only one specific exception, not the entire CLR group.

"Well write a loop then." you say. But not so fast! Someone tried that already and it was uselessly slow. (Yes I've verified that its slow on my system as well.)

So the challenge is to use a macro to toggle the entire CLR Exceptions category in less than 1 or 2 seconds. This question is a duplicate of Any have a Visual Studio shortcut/macro for toggling break on handled/unhandled exceptions?

like image 372
dss539 Avatar asked Jun 05 '09 20:06

dss539


1 Answers

Very similar to the other answer, but there is a special ExceptionSetting for the group.

Dim dbg As EnvDTE90.Debugger3 = DTE.Debugger Dim exSettings As EnvDTE90.ExceptionSettings = dbg.ExceptionGroups.Item("Common Language Runtime Exceptions") Dim exSetting As EnvDTE90.ExceptionSetting Try     exSetting = exSettings.Item("Common Language Runtime Exceptions") Catch ex As COMException     If ex.ErrorCode = -2147352565 Then         exSetting = exSettings.NewException("Common Language Runtime Exceptions", 0)     End If End Try  If exSetting.BreakWhenThrown Then     exSettings.SetBreakWhenThrown(False, exSetting) Else     exSettings.SetBreakWhenThrown(True, exSetting) End If 
like image 149
Bryce Kahle Avatar answered Oct 06 '22 14:10

Bryce Kahle