在调试或发布模式下调试与在不调试的情况下运行

本文关键字:调试 情况下 运行 模式 布模式 | 更新日期: 2023-09-27 18:16:31

我一直在调试和发布模式下调试我的c#项目(WCF)。在调试时,我希望未处理异常显示它被抛出的位置。当我不在调试或发布模式下调试应用程序时,我会捕获所有未处理的异常并记录它们。现在我通过添加和删除代码来做到这一点。当不调试时,我添加异常句柄代码,并在调试时删除它。

是否有代码或标志显示当前运行的应用程序正在Visual Studio中调试,无论是在调试还是发布模式下。这与简单的调试和发布设置不同。基本上,任何表示该应用程序当前与VS调试机制相关联的标志或代码(无论发布或调试模式)。我可以在没有调试的情况下运行应用程序,即使在调试模式下,这个标志将告诉我它没有与Visual Studio连接以进行调试。

在调试或发布模式下调试与在不调试的情况下运行

代码中没有用于检查DEBUG/RELEASE版本的"标志",但您可以使用预处理器检查自己创建一个

#if DEBUG
    const bool isDebugCompile = true;
#else
    const bool isDebugCompile = false;
#endif

检查是否从Visual Studio(或其他调试器)运行,有一个内置的API来检查。

bool runningWithDebugger = System.Diagnostics.Debugger.IsAttached;

一种完全不同的方法是使用Trace类并根据您的调试场景配置不同的跟踪侦听器,这样您可以轻松地从单点(在代码或配置中)重新配置日志记录行为。同样思路的另一个选择是使用日志库,如log4net或企业库中的日志应用程序块,并从那里配置日志行为。

if(System.Diagnostics.Debugger.IsAttached)
{
    // ...
}

顺便说一句,我相信以前有人问过这个问题。