You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Trace.Fail()为何始终中断代码执行?技术咨询

问题原因与解决办法

你遇到的这个自动暂停,本质是调试器对断言失败的自动中断行为,和你开启的“允许调试器步入其他程序集代码”设置直接相关:

  1. 调用Trace.Fail()时,默认的DefaultTraceListener会触发断言失败逻辑,调试器检测到这个事件后,会自动中断到触发点的代码位置
  2. 因为你开了允许调试器进入外部程序集,所以调试器直接跳转到了TraceInternal.Fail()的内部代码行(也就是你看到的第226行),看起来像有个断点,但其实是调试器的默认中断机制

给你几个解决方向:

  • 若不想进入系统框架代码:在IDE调试设置里勾选「仅我的代码」(Just My Code),或者关闭「启用.NET框架源代码单步执行」选项(以Visual Studio为例,路径是工具→选项→调试→常规),这样调试器只会停在你自己的代码里,不会跳转到TraceInternal的内部
  • 若想彻底消除暂停行为:替换默认的TraceListener,用自定义实现输出失败信息(比如写入日志文件),示例代码如下:
    // 移除默认的监听
    Trace.Listeners.RemoveAt(0);
    // 添加自定义监听
    Trace.Listeners.Add(new TextWriterTraceListener("trace.log"));
    
    这样调用Trace.Fail()时只会把信息写入日志,不会触发弹窗和调试器中断
  • 临时应急方案:如果只是不想在当前场景触发中断,可以临时禁用断言弹窗:
    ((DefaultTraceListener)Trace.Listeners[0]).AssertUiEnabled = false;
    
    这样Fail时不会弹框,调试器也就不会自动中断

内容的提问来源于stack exchange,提问作者TRex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 05:42:11