2010-10-25 114 views
3

我的工作,以减少大量的Visual C++ 2008应用程序的生成时间。其中最严重的瓶颈似乎是PDB文件的生成:在链接阶段,mspdbsrv.exe会迅速消耗可用的RAM,并构建机器开始页面不断。什么是Visual C++ PDB文件的合理大小?

我目前的理论是,我们的PDB文件是太大了。但是,我一直无法找到有关PDB文件“正常”大小的信息。我一直在服用我们的应用程序的DLL之一的一些粗略的测量,具体如下:

  • CPP文件:34.5 MB,900K线
  • 头文件:21 MB,400K线
  • 编译DLL: 33 MB(编译调试,不释放)
  • PDB:187 MB

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

(在我们的应用中最大的PDB文件是目前271 MB,为47.5 MB DLL源代码大小是难以衡量的那一个,虽然)。

谢谢!

回答

1

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

有一两件事你可以尝试是你的程序分割成更小的部分 - 的DLL。每个DLL都有自己独立的.pdb。但是我严重怀疑它会减少构建时间。

+0

谢谢。我打算试验更小的DLL;我的希望是,这将导致更小的PDB文件,然后可以在更少的内存中处理,从而减少分页和减少磁盘I/O。不过,这只是一个假设。 – 2010-10-25 14:22:01

0

你真的需要在所有的时间全调试信息?您可以使用更少的调试信息创建配置。

但是就像sharptooth已经说过的那样,现在是时候重构并将程序拆分成更小的可维护部分。这不仅会缩短构建时间。