#if DEBUG在连接外部调试器时执行?

时间:2016-01-02 13:51:14

标签: c# vb.net visual-studio

在程序发布后调试程序时是否执行#if DEBUG(例如通过OllyDBG等调试工具),或者编译器在发布版本中是否已经对其进行了修改?

表示在发布版本上创建程序后,#if DEBUG的作用是什么意思?

4 个答案:

答案 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内的任何代码都不会成为版本构建的一部分

相关问题