visual-c++ - Visual C++ PDB 文件的合理大小是多少?

标签 visual-c++

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

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

  • CPP 文件:34.5 MB,90 万行
  • 头文件:21 MB,40 万行
  • 已编译的 DLL:33 MB(为调试而不是发布而编译)
  • PDB:187 MB

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

    (我们的应用程序中最大的 PDB 文件目前为 271 MB,对于 47.5 MB 的 DLL。不过,源代码大小更难衡量。)

    谢谢!

    最佳答案

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

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

    关于visual-c++ - Visual C++ PDB 文件的合理大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4015316/

    相关文章:

    c++ - 如何在 C++ 程序中获取当前日期?

    .net - 在托管 C++ 中创建 KeyValuePair

    c++ - OLE 入门 - 什么是好的学习项目选择?

    winapi - 带有嵌套对话框的选项卡控件中的选项卡顺序 (WS_EX_CONTROLPARENT)

    c++ - 从使用 Wix 制作的 MSI 生成文本

    javascript - 如何将结构从 V8 C++ 函数返回到 javascript 模块

    c++ - 当包含 Stroustrup 书中的 std_lib 时,不理解 VS 中 HelloWorld 的错误

    c++ - 将 bool 值更改为 0 或 1 以外的值?

    c++ - SSE2 双倍乘法比标准乘法慢

    c# - 从 C# 应用程序调用 C++ dll 时找不到入口点