.Net属性Debugger.IsAttached可以在运行时用于检测是否附加了调试器。这意味着在连接调试器时,此属性可用于具有不同的行为。我可以轻松地给出一些示例,说明为什么不使用此属性(因为该程序很难调试),但是我很难找到一个使用它似乎合法的示例。
您是否有使用Debugger.IsAttached是明智选择的用例?
答案 0 :(得分:4)
例如,当调试器连接到远程服务器时,可以在某些情况下使用该属性在特定点暂停服务。然后,该支票将附有Debugger.Break
。
另一个用例可能是一些额外的日志记录(包含敏感或大量日志记录)已写入控制台。
答案 1 :(得分:4)
我个人认为它对日志记录很有用。附加调试器后,如果没有登录,日志将进入控制台窗口,而日志会通过Nlog设置进入,该日志实际上会将日志写为json。
if (!Debugger.IsAttached)
logging.AddNLog(NLogAspNetCoreOptions.Default);
else
logging.AddConsole();
答案 2 :(得分:2)
一个好的用例是在您的应用程序启动时使用它来启动某些服务,除非您附加了调试器。
我的案例是使用Hangfire仪表板。
Hangfire随附一个仪表板,但您必须在应用程序启动时进行设置,该仪表板是实时的,并且消耗了我在生产环境中不需要的资源,因为当我在环境中时,任何人都不需要看到它调试。因此,我设置了仅在调试模式下才启动仪表板的条件,这样我才能看到正在运行的作业及其状态以及失败的原因。