在程序发布后调试程序时是否执行#if DEBUG
(例如通过OllyDBG等调试工具),或者编译器在发布版本中是否已经对其进行了修改?
表示在发布版本上创建程序后,#if DEBUG的作用是什么意思?
答案 0 :(得分:1)
#if DEBUG
。如果未定义DEBUG
符号,则不编译内部代码,因此无法在发布版本中执行。
来自MSDN:
当C#编译器遇到#if指令,最后是#endif指令时,只有在定义了指定的符号时,它才会在指令之间编译代码。
答案 1 :(得分:0)
根据我的理解,编译器指令如#if DEBUG
在编译时解析,具体取决于设置的符号。实际上,这意味着要考虑构建配置。如果在构建期间未设置DEBUG
,则稍后附加调试器无法使实现的已删除部分神奇地重新出现;在编译过程中,相应的部分确实被“核化”了。
答案 2 :(得分:0)
这是一个预处理器指令,因此只有#if
符号存在时才会编译DEBUG
中的代码。
因此,您将无法调试不属于已编译的中间语言代码的代码...
答案 3 :(得分:0)
#if DEBUG
与调试无关,只是在构建/程序集中包含或排除了部分源代码。
标准版本构建设置未定义DEBUG,因此#if DEBUG
内的任何代码都不会成为版本构建的一部分