Каков разумный размер для файла Visual C ++ PDB? - PullRequest
3 голосов
/ 25 октября 2010

Я работаю над сокращением времени сборки большого приложения Visual C ++ 2008.Одним из худших узких мест, по-видимому, является генерация файла PDB: на этапе компоновки mspdbsrv.exe быстро потребляет доступную оперативную память, и сборочная машина начинает постоянно пейджировать.

Моя текущая теория заключается в том, что наша PDBфайлы просто слишком велики.Однако я не смог найти никакой информации о том, каков «нормальный» размер файла PDB.Я провел некоторые приблизительные измерения одной из библиотек DLL в нашем приложении:

  • CPP-файлы: 34,5 МБ, 900 тыс. Строк
  • Заголовочные файлы: 21 МБ, 400 тыс. Строк
  • Скомпилированная DLL: 33 МБ (скомпилирована для отладки, а не выпуска)
  • PDB: 187 МБ

Итак, размер файла PDB составляет примерно 570% от размераDLL. Может ли кто-нибудь, имеющий опыт работы с большими приложениями Visual C ++, сказать мне, имеют ли смысл эти соотношения и размеры? Или есть ли признак того, что мы делаем что-то не так?

(Самый большой файл PDB внаше приложение в настоящее время занимает 271 МБ для 47,5 МБ DLL. Однако размер исходного кода для него сложнее измерить.)

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 октября 2010

Да, файлы .pdb могут быть очень большими - даже тех размеров, которые вы упомянули.Поскольку файл .pdb содержит данные для сопоставления исходных строк с машинным кодом, и вы компилируете много кода, в файле .pdb много данных, и вы, вероятно, ничего не сможете сделать с этим напрямую.вы можете попробовать разбить вашу программу на более мелкие части - DLL.Каждая DLL будет иметь свой собственный независимый .pdb.Однако я серьезно сомневаюсь, что это уменьшит время сборки.

0 голосов
/ 25 октября 2010

Вам действительно нужна полная отладочная информация в любое время? Вы можете создать конфигурацию с меньшим количеством отладочной информации.

Но, как уже сказал острый зуб, пришло время провести рефакторинг и разбить вашу программу на небольшие, более удобные в обслуживании части. Это не только сократит время сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...