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