如何在c#程序中设置“IF DEBUG”条件,以便在运行时忽略一组代码(如果您在调试模式下运行,如果程序不在调试模式下运行,是否执行一个代码块?2可以使用这种方法的一种情况是,在一个代码块的开始处取一个时间戳,在代码块的结束处取另一个时间戳。3它们在运行时几乎没有差别。然而,如果您在调试模式下单步调试代码,它们将有很大的不同,并且“if块”中的错误条件可能会被触发,从而导致某些代码的不合时宜(双关语)执行。
vm0i2vca1#
您只需将代码放入这样的块中:
#IF DEBUG //code goes here #endif
这不是一个运行时的东西,这是一个预处理器指令,这意味着代码块中的代码甚至不会被编译,也不会被包含。如果要在运行时检查是否正在调试,可以选中Debugger.IsAttached
Debugger.IsAttached
5ktev3wc2#
在以下情况下使用预处理器指令#:
#if debug // run in debug mode #else // run if not in debug mode #endif
lawou6xi3#
您也可以使用
[Conditional("Debug")]
方法的属性。
chy5wohz4#
更多细节:
using System.Diagnostics;
lpwwtiir5#
#if DEBUG // something #elif // some other thing #endif
nafvub8i6#
#if (DEBUG) ... #else ... #endif
参见此处:http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
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
getopt()
if (bDebug) { // do something }
djmepvbi8#
if (System.Diagnostics.Debugger.IsAttached) { button3.Visible = true; } else { button3.Visible = false; }
8条答案
按热度按时间vm0i2vca1#
您只需将代码放入这样的块中:
这不是一个运行时的东西,这是一个预处理器指令,这意味着代码块中的代码甚至不会被编译,也不会被包含。
如果要在运行时检查是否正在调试,可以选中
Debugger.IsAttached
5ktev3wc2#
在以下情况下使用预处理器指令#:
lawou6xi3#
您也可以使用
方法的属性。
chy5wohz4#
更多细节:
using System.Diagnostics;
lpwwtiir5#
nafvub8i6#
参见此处:http://bloggingabout.net/blogs/rick/archive/2005/03/10/2396.aspx
kqqjbcuj7#
由于其他所有答案(除了一个)都不能解决您的问题,让我试试:
如果你希望有一个运行时开关,你需要一个从你的环境或命令行获取信息的方法,另外,一旦你得到了信息,你需要将它应用到你的程序中。
1)为此,您需要一个全局变量。
2)获取调试信息
使用
getopt()
函数来确定调试是关闭还是打开3)在代码中希望打开调试的每个位置,检查是否设置了bDebug
djmepvbi8#