2010-10-25 3 views
3

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

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

  • CPP файлы: 34.5 MB, 900K линии
  • файлы заголовков: 21 MB, 400K линии
  • Составитель DLL: 33 MB (скомпилированные для отладки, не релиз)
  • PDB: 187 MB

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

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

Спасибо!

ответ

1

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

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

+0

Спасибо. Я планирую экспериментировать с меньшими DLL; я надеюсь, что это приведет к меньшим файлам PDB, которые затем могут быть обработаны за меньшую память, что приведет к меньшему количеству подкачки и сокращению дискового ввода-вывода. Тем не менее, это просто гипотеза. –

0

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

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

Смежные вопросы