我对linux和使用CMAKE构建二进制文件相对比较陌生。在Windows中,我习惯于看到带有外部pdb中存储的调试信息的小二进制文件。然而,在linux中,我问了这个问题:有没有办法确定什么代码使linux共享对象膨胀?并且注意到构建选项-g
将DebugInfo直接包含在二进制文件中,这导致了代码膨胀。
在这一点上,我有两个担忧:
表演
幸运的是,在线阅读后,RelWithDebInfo
性能相当于Release
模式:
与Release模式相比,使用RelwithDebInfo模式生成的代码不应降低其性能,因为生成的符号表和调试元数据不存在于可执行代码段中,因此在运行代码时不附加调试器时,它们不应影响性能。
记忆力
使用RelWithDebInfo
创建的一些linux非共享对象约为100MB,因此在Google Cloud VM环境中,加载许多这些二进制文件如何影响内存使用/成本?我搜索了一下,但没有找到任何明确的答案。
问题
RelWithDebInfo是否会对内存使用/成本产生负面影响,如果是,是否有方法避免这种情况,但仍保留DebugInfo?