使用 Cmake 的 RelWithDebInfo 作为默认构建类型

Using Cmake's RelWithDebInfo as Default Build Type

本文关键字:默认 构建 类型 Cmake RelWithDebInfo 使用      更新时间:2023-10-16

在开发和分发应用程序时,使用RelWithDebInfo作为默认构建类型有什么缺点吗?

在发布模式下出现问题而不是在调试模式下出现问题后,我想到了这一点。从那时起,我使用RelWithDebInfo构建类型作为默认值。我仍然可以调试代码,并且我没有遇到任何与构建类型相关的问题。

这是一个很好的方法来防止错误,不发生在调试模式,但发生发布模式?

调试优化构建的通常缺点仍然存在。

特别地,调试器可能偶尔会对变量的值撒谎。此外,通常不可能检查已优化的变量,这通常会影响函数参数和局部变量。

更糟糕的是,你没有得到断言。RelWithDebInfo设置NDEBUG预处理器标志,该标志关闭断言,并剥夺了您诊断编程错误的强大工具。

当然,使用RelWithDebInfo 作为默认并没有错,但是你仍然应该定期测试所有的构建类型。如果您还没有这样做,那么为您的项目设置一个持续集成系统,它可以自动运行所有构建类型上的所有测试。