Visual C ++ PDB文件的大小合理吗?

时间:2010-10-25 14:04:45

标签: visual-c++

我正在努力减少大型Visual C ++ 2008应用程序的构建时间。最糟糕的瓶颈之一似乎是生成PDB文件:在链接阶段,mspdbsrv.exe快速占用可用的RAM,并且构建机器开始不断页面。

我目前的理论是我们的PDB文件太大了。但是,我一直无法找到有关PDB文件“正常”大小的信息。我在我们的应用程序中对其中一个DLL进行了粗略测量,如下所示:

  • CPP文件:34.5 MB,900k行
  • 标题文件:21 MB,400k行
  • 编译的DLL:33 MB(编译用于调试,而不是发布)
  • PDB:187 MB

因此,PDB文件的大小约为DLL的570%。 有大型Visual C ++应用程序经验的人能否告诉我这些比率和大小是否有意义?或者这里是否有迹象表明我们做错了什么?

(我们的应用程序中最大的PDB文件目前是271 MB,对于一个47.5 MB的DLL。虽然源代码大小很难衡量。)

谢谢!

2 个答案:

答案 0 :(得分:1)

是的,.pdb文件可能非常大 - 甚至是您提到的大小。由于.pdb文件包含将源代码行映射到机器代码的数据,并且您编译了大量代码,因此.pdb文件中有大量数据,您可能无法直接执行任何操作。

您可以尝试的一件事是将程序拆分为更小的部分 - DLL。每个DLL都有自己独立的.pdb。但是我很怀疑它会减少构建时间。

答案 1 :(得分:0)

您是否真的需要完整的调试信息?您可以使用较少的调试信息创建配置。

但正如尖锐的人已经说过的那样,是时候将你的程序重构并拆分成更小的可维护部分了。这不仅会缩短构建时间。