你如何在c#程序中加入“IF DEBUG”条件?

时间:2010-06-16 19:28:10

标签: c# debugging conditional

如何在ac#程序中添加“IF DEBUG”条件,以便在运行时如果您在调试模式下运行它将忽略一组代码然后,如果程序是,则执行一段代码没有在调试模式下运行?可以使用的情况是如果在块的开始处采用时间戳并且在结束时采用另一个时间戳。在运行时几乎没有什么不同。然而,如果你在调试模式中单步执行代码,它们会有很大差异,并且“if block”中的错误条件可能会被启动,从而导致某些代码的不合时宜(双关语)执行。

7 个答案:

答案 0 :(得分:15)

您只需将代码放在这样的块中:

#IF DEBUG

//code goes here

#endif

这不是运行时的事情,这是一个预处理器指令,这意味着该块中的代码甚至不会被编译,也不会被包含。

如果您想在运行时检查是否正在调试,可以查看Debugger.IsAttached

答案 1 :(得分:5)

使用预处理器指令#if:

#if debug
    // run in debug mode
#else
    // run if not in debug mode
#endif

答案 2 :(得分:3)

您也可以使用

[Conditional("Debug")]
方法的

属性。

答案 3 :(得分:1)

更多细节:

  • 您可以包装整个方法,也可以只包含代码块或只包含一行代码。
  • 您需要添加using System.Diagnostics;

答案 4 :(得分:0)

#if DEBUG
        // something
#elif
        // some other thing
#endif

答案 5 :(得分:0)

#if (DEBUG)
...
#else
...
#endif

见这里:http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx

答案 6 :(得分:0)

由于每个其他答案(但一个)都没有解决您的问题,请试试:

如果您希望进行运行时切换,则需要一种从环境或命令行获取信息的方法。此外,一旦获得该信息,您将需要将其应用于您的计划。

1)为此你需要一个全局变量。

bool bDebug;

2)获取调试信息

bDebug = strcmp (getEnv ("DebuggingMode"), "1");  // you'll need to mess with this a little - do 'man getenv' and 'man strcmp' for an understanding of what I'm doing
  • 或 -

利用getopt()函数查明调试是关闭还是打开

3)您希望调试的代码中的每个位置都打开,检查是否已设置bDebug

   if (bDebug) {
   // do something
   }