2010-10-25 76 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已經說過的那樣,現在是時候重構並將程序拆分成更小的可維護部分。這不僅會縮短構建時間。

相關問題