debugging 如何在c#程序中设置“IF DEBUG”条件?

4sup72z8  于 2022-12-29  发布在  C#
关注(0)|答案(8)|浏览(529)

如何在c#程序中设置“IF DEBUG”条件,以便在运行时忽略一组代码(如果您在调试模式下运行,如果程序不在调试模式下运行,是否执行一个代码块?2可以使用这种方法的一种情况是,在一个代码块的开始处取一个时间戳,在代码块的结束处取另一个时间戳。3它们在运行时几乎没有差别。然而,如果您在调试模式下单步调试代码,它们将有很大的不同,并且“if块”中的错误条件可能会被触发,从而导致某些代码的不合时宜(双关语)执行。

vm0i2vca

vm0i2vca1#

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

#IF DEBUG

//code goes here

#endif

这不是一个运行时的东西,这是一个预处理器指令,这意味着代码块中的代码甚至不会被编译,也不会被包含。
如果要在运行时检查是否正在调试,可以选中Debugger.IsAttached

5ktev3wc

5ktev3wc2#

在以下情况下使用预处理器指令#:

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

lawou6xi3#

您也可以使用

[Conditional("Debug")]

方法的属性。

chy5wohz

chy5wohz4#

更多细节:

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

lpwwtiir5#

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

kqqjbcuj7#

由于其他所有答案(除了一个)都不能解决您的问题,让我试试:
如果你希望有一个运行时开关,你需要一个从你的环境或命令行获取信息的方法,另外,一旦你得到了信息,你需要将它应用到你的程序中。
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
   }
djmepvbi

djmepvbi8#

if (System.Diagnostics.Debugger.IsAttached)
        {
            button3.Visible = true;
        }
        else
        {
            button3.Visible = false;
        }

相关问题