在开发应用程序和分发应用程序时使用RelWithDebInfo作为默认构建类型是否有任何缺点?
在发布模式中出现问题但在调试模式下没有问题时我想到了这一点。从那以后,我使用RelWithDebInfo构建类型作为默认值。我仍然可以调试代码,但我没有遇到与构建类型相关的任何问题。
这是防止在调试模式下发生但发生在发布模式下的错误的好方法吗?
答案 0 :(得分:1)
调试优化版本的常见缺点适用。
特别是,调试器可能偶尔会告诉您变量的值是什么。此外,通常无法检查已优化的变量,这些变量通常会影响函数参数和局部变量。
可以说更糟糕的是,你没有得到asserts。 RelWithDebInfo设置NDEBUG
预处理器标志,该标志关闭断言并抢夺您用于诊断编程错误的强大工具。
当然使用RelWithDebInfo 作为默认没有任何问题,但您仍应定期测试所有构建类型。如果您还没有这样做,请为您的项目设置一个持续集成系统,该系统会自动运行所有构建类型的所有测试。