切换"抛出异常时中断".使用宏或键盘快捷方式

dss*_*539 42 ide exception visual-studio visual-studio-macros

编辑:Visual Studio 2015的新异常窗口比旧对话框快得多,我不再关心使用它的键盘快捷方式.

是否有一个宏或键盘快捷方式,可以在不使用GUI的情况下切换"在抛出异常时中断"?

使用ctrl + alt + e打开对话框并检查"公共语言运行时异常""抛出"框然后单击"确定"很简单,但这是我做了很多事情.我宁愿有一个键盘快捷键.

这个问题是一个副本 任何有一个Visual Studio快捷方式/宏来切换处理/未处理的异常中断?

然而,海报接受的答案并没有真正的工作,我也很喜欢那个答案工作.

重复问题中的答案是不可接受的,因为它只切换一个特定的异常,而不是整个CLR组.

"好吧,然后写一个循环." 你说.但不是那么快!有人已经尝试过,而且它无用缓慢.(是的,我已经证实它在我的系统上也很慢.)

因此,挑战在于使用宏来在不到1秒或2秒的时间内切换整个CLR例外类别.这个问题是一个副本 任何有一个Visual Studio快捷方式/宏来切换处理/未处理的异常中断?

Bry*_*hle 18

与其他答案非常相似,但该组有一个特殊的ExceptionSetting.

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
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这段代码,虽然它成功检查了"例外"对话框中的顶级复选框,但这是唯一选中的复选框.单个异常的复选框保持未选中状态,因此抛出异常时调试器不会中断. (6认同)
  • 嗯,好吧,这不会切换异常的子部分.我刚注意到这一点.:( (3认同)

And*_*kin 13

我创建了一个可以可靠地执行此操作的免费Visual Studio扩展:Exception Breaker.
它使用IDebugSession2.SetException非快速的未记录调用:所有异常都在20到60毫秒内设置/取消设置.