1

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

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

4

2 回答 2

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

于 2013-06-02T06:05:49.147 回答
1
if(System.Diagnostics.Debugger.IsAttached)
{
    // ...
}

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

于 2013-06-02T06:08:50.030 回答