在调试或释放模式下调试标志与不调试运行

时间:2013-06-02 06:00:10

标签: c# wcf visual-studio visual-studio-2012

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

是否有代码或标志显示当前正在运行的应用程序正在Visual Studio中调试,无论是在调试还是释放模式下。这与简单的调试和发布设置不同。基本上任何说明此应用程序的标志或代码当前都与VS调试机制相关联(无论是发布模式还是调试模式)。我甚至可以在调试模式下运行应用程序而无需调试,这个标志会告诉我它没有与Visual Studio链接以进行调试。

2 个答案:

答案 0 :(得分:2)

代码中没有用于检查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或企业库中的日志记录应用程序块,并从那里配置日志记录行为。

答案 1 :(得分:1)

if(System.Diagnostics.Debugger.IsAttached)
{
    // ...
}
不过,我相信以前曾经问过这个问题。