Visual Studio 2022调试器异常后在栈内每个await处暂停的解决方法
Visual Studio 2022 调试时异常沿await调用栈重复暂停的配置方案
该问题是Visual Studio 2022托管代码调试默认开启「异步边界异常中断」特性导致的,按以下步骤调整配置即可实现需求:异常首次抛出时暂停一次,后续仅在显式rethrow位置再次中断,跳过调用栈传递过程中所有await节点的无效暂停。
配置操作步骤
关闭跨await边界异常中断开关
- 顶部菜单栏依次打开「工具」→「选项」,左侧导航栏展开「调试」→「常规」分类。
- 在右侧配置列表中,找到
在异常跨越await边界传递时中断(仅托管代码)选项,取消前面的勾选。 - 同页面确认勾选「启用仅我的代码」选项,该配置会过滤系统框架、第三方非用户代码中的异常传递节点,避免无效暂停。
调整异常中断规则
- 调试状态下按快捷键
Ctrl+Alt+E调出异常设置面板,也可以通过顶部菜单「调试」→「窗口」→「异常设置」打开。 - 点击异常设置面板顶部工具栏的「将所有异常重置为默认设置」按钮,恢复默认异常触发逻辑:默认规则下调试器仅会在异常首次抛出的位置中断一次,不会在异常沿调用栈向上传递的每个节点重复暂停。
- 如果你自定义过特定异常的捕获规则,只需要保留对应异常「抛出」列的勾选,不要开启「用户处理异常时中断」的相关选项,该选项会触发异常被每个await节点的隐式处理逻辑拦截时反复暂停。
配置完成后重启Visual Studio即可生效,后续调试时异常首次抛出暂停后,点击一次继续就会直接跳转到异常最终未处理的位置,或者代码中显式rethrow的位置,不会再在调用栈的每个await点逐一暂停。
临时应急技巧:如果没改配置遇到连续暂停的情况,不需要终止进程重启,连续按5次F5(继续调试快捷键)的速度远快于鼠标点击,不过根治问题还是需要修改上述配置。
内容的提问来源于stack exchange,提问作者clemens
相关产品推荐
相关产品推荐

