为什么生成pdb文件会增加本机c++ exe文件的大小?

visual studio 2008 - Why does generating pdb files increase the size of my native C++ exe?

本文关键字:文件 exe c++ 增加 pdb 为什么 本机      更新时间:2023-10-16

只要打开配置属性>链接器>调试>生成调试信息我的exe的大小已经从2.11MB增加到2.34MB

  1. 额外的~230KB是用来做什么的?我认为exe应该大致相同的大小(给予或采取额外的路径到pdb文件),但不是那么多。这种"膨胀"会对性能造成影响吗?

  2. 我也看到配置属性>C/c++>通用>调试信息格式在发布模式下设置为禁用,而pdb文件设置为生成,有什么原因会这样吗?从我可以告诉exe是相同的大小-它只是PDB变得更大,当你启用程序数据库,我看不出这个问题,但我想确保没有一些我错过考虑程序数据库是默认的新项目在发布配置。

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

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

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

不只是PDB文件的路径,而是可执行文件的图像头中的"Debug",内部GUID以确保在调试/崩溃调试时加载正确的PDB文件。