【发布时间】:2022-03-08 20:33:53
【问题描述】:
在 C# 中是否有任何等效于DebugBreak() 的语句?我想在满足特定条件时调用调试器。
【问题讨论】:
在 C# 中是否有任何等效于DebugBreak() 的语句?我想在满足特定条件时调用调试器。
【问题讨论】:
【讨论】:
Debugger.Break();
关于其他答案,我更喜欢使用Debugger.Launch()。
如果应用程序尚未在调试器中运行,Launch() 将调用调试器对话框,允许您将 Visual Studio(或其他调试器)附加到进程。但是,如果您已经在调试,它将直接通过 Debugger.Launch() 调用。另一方面,Break() 将充当断点 - 每次到达该点时都会中断(如果尚未附加进程,则会调用调试器对话框)。
要非常小心,不要在代码中留下任何一条语句。将带有Debugger 调用的代码发送到生产环境可能会停止您的应用程序或造成难以追踪的错误(上个月的糟糕体验)。
【讨论】:
System.Diagnostics.Debugger.Break();
//Lauches the JIT debug window
System.Diagnostics.Debugger.Launch();
这在调试服务时特别有用,因为您会获得即时调试器窗口,然后可以选择 Visual Studio 窗口来调试服务。
【讨论】:
Debugger.IsAttached。
if (Debugger.IsAttached) { Debugger.Break(); } 是具有永久断点的有用模式(不依赖于调试器保存状态),我通常将其包含在 #if DEBUG 内的最后机会异常处理程序中。
System.Diagnostics.Debugger.Break();
【讨论】: