【问题标题】:Why does generating pdb files increase the size of my native C++ exe?为什么生成 pdb 文件会增加我的原生 C++ exe 的大小?
【发布时间】:2011-07-11 23:17:58
【问题描述】:

只需打开 Configuration Properties > Linker > Debugging > Generate Debug Info,我的 exe 大小就从 2.11MB 增加到 2.34MB

  1. 额外的 ~230KB 是用来做什么的?我认为 exe 的大小应该大致相同(为 pdb 文件提供或获取额外的路径),但不是那么多。这种“膨胀”会影响性能吗?

  2. 我还看到 Configuration Properties > C/C++ > General > Debug Information Format 在 pdb 文件设置为生成时在发布模式下设置为禁用,是否有任何原因这会是什么?据我所知,exe 大小相同 - 只是当您启用程序数据库时 PDB 会变大,我看不出这有什么问题,但我想确保没有我的部分考虑到程序数据库是发布配置中新项目的默认设置,因此缺少。

【问题讨论】:

    标签: c++ visual-studio-2008


    【解决方案1】:

    可执行文件大小的增加可能是由于编译器包含了原本会被优化掉的代码。尝试使用/OPT:REF 进行链接,看看是否会将大小恢复到原来的水平。

    至于性能损失,应该不是很大。膨胀可能会导致代码缓存效率降低,但在大多数情况下可以忽略不计。

    【讨论】:

    • @user636333 - 我的错。应该是 /OPT:REF 。请参阅更新的答案。 /OPT:NOREF 没有改变实际上证实了我试图说的话......
    • 谢谢你,当我发布关于 /OPT:NOREF 的评论时,它刷新到 /OPT:REF,我想我希望这是一个修订版,否则我真的失去了它!再次感谢。
    • @user636333,您仍然拥有它... :-) 请注意,答案底部有一条注释,上面写着“X 前已编辑”。单击时间,您将看到版本差异(以及描述编辑的评论,如果我不是懒惰并写了一个)。
    【解决方案2】:

    EXE 的大小可能与性能完全无关。

    【讨论】:

      【解决方案3】:

      不仅仅是 PDB 文件的路径,还有可执行文件的图像头中的“调试”,内部 GUID 以确保在调试/崩溃调试时加载正确的 PDB 文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 2023-03-24
        • 2010-12-28
        • 2021-07-03
        • 2016-01-15
        • 1970-01-01
        相关资源
        最近更新 更多