如何合并多个 PDB 文件?

2024-01-22

我们目前正在使用单个命令行工具在 Windows 和 Linux 上构建我们的产品。

到目前为止,它工作得很好,允许我们从源代码构建,并且具有比我们之前的任何构建系统所允许的更精细的依赖关系。这为我们带来了强大的增量和并行构建能力。

为了简要描述构建过程,我们得到通常的:

.cpp -- cl.exe --> .obj and .pdb
multiple .obj and .pdb -- cl.exe --> single .dll .lib .pdb
multiple .obj and .pdb -- cl.exe --> single .exe .pdb

msvc C/C++ 编译器充分支持它。

最近出现了构建一些静态库的需求。 根据我们收集的信息,构建静态库的过程是:

multiple .cpp -- cl.exe --> multiple .obj and a single .pdb
multiple .obj -- lib.exe --> a single .lib

单个 .pdb 意味着cl.exe对于所有 .cpp 源,只应执行一次。这种单一执行意味着我们无法并行化该静态库的构建。这实在是不幸。

我们根据文档(以及可用的命令行选项)进一步调查了一些:

  • cl.exe不知道如何构建静态库
  • lib.exe不知道如何构建 .pdb 文件

有人知道合并多个 PDB 文件的方法吗?我们注定要缓慢地构建静态库吗?像 Incredibuild 这样的工具如何解决这个问题?


我已经很长时间没有接触过C++了,但是从这个开始article http://blogs.msdn.com/b/vcblog/archive/2014/03/05/shrink-my-program-database-pdb-file.aspx,这似乎是一个性能技巧,旨在停止重新创建公共标头的符号。

您可以尝试 /Z7 在每个 obj 中嵌入信息,而不是创建 PDB,然后使用 rebase 链接并重新创建它,如下所示article http://msdn.microsoft.com/en-us/library/hh7adf4f.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何合并多个 PDB 文件? 的相关文章

  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • 使用 C++ 获取 %APPDATA% 路径

    我想获得通往 APPDATA folder 在 win 2000 和 xp 中它位于 C Documents and Settings user name Application Data 在 vista 和 win7 中它位于 C Use
  • 在 Perl 中实现 CLI 工具的最佳实践是什么?

    我正在使用 Perl 实现 CLI 工具 我们可以遵循哪些最佳实践 作为前言 我花了 3 年时间为一家大型金融公司设计并实现了一个相当复杂的 Perl 命令行工具集 以下想法基本上是我们团队设计指南的一部分 用户界面 命令行选项 允许尽可能
  • 为什么 _Printf_format_string_ 宏不产生任何警告?

    在下面的代码片段中 格式说明符的错误用法MyFormat 根据 SAL 规范 调用应该产生警告 并且对于相同的调用printf 我确实会收到所有这些警告 但即使使用 我的代码也会默默编译 W4 我究竟做错了什么 我正在使用 MSVC 201
  • std::make_shared 作为默认参数无法编译

    在 Visual C 2008 和 2010 中 以下代码无法编译并出现以下错误 include
  • 从 Windows Batch (cmd.exe) 中的文件读取环境变量

    我正在尝试从批处理文件中读取变量 以便稍后在批处理脚本 Java 启动器 中使用 理想情况下 我希望所有平台 Unix Windows 上的设置文件都具有相同的格式 并且也是有效的 Java 属性文件 也就是说 它应该看起来像这样 sett
  • MSVC - 如何确定类型是否必须移动? [复制]

    这个问题在这里已经有答案了 我似乎遇到了编译器 库错误的问题 当我尝试时 include
  • 对 ruby​​ 命令行应用程序的代码进行单元测试 - 如何模拟/通过 ARGV

    我有一个命令行应用程序 它使用 thor 来处理选项的解析 我想使用 test unit 和 或 minitest 对代码进行命令行功能的单元测试 我似乎无法弄清楚如何确保 ARGV 数组 通常会保存命令行中的选项 保存我的测试选项 以便可
  • Lua(命令行)执行后保持打开状态

    我已经广泛寻找这个但我似乎找不到它 有什么方法可以执行Lua通过双击脚本 在中执行它 Lua Command Line 并在执行后保持打开状态 例如 print Hello World 该代码可以编译并运行 但是如果我双击hello lua
  • 使用来自本地对象的消息的 std::Exception

    以下代码是否可以安全地抛出带有自定义消息的异常 include
  • 如何从命令行构建 .csproj 将日志写入指定位置?

    虽然 无日志 构建似乎可以顺利地与类似的东西一起工作 c Program Files Microsoft Visual Studio 9 0 Common7 ide VCSExpress Project1 csproj build 以下失败
  • 包含带空格的可执行路径的环境变量是否也应包含必要的引号?

    定义环境变量时 对我来说 在 Windows 上 也许有一个更通用的准则 set MY TOOL C DevTools bin mytool exe 如果该工具位于带有空格的路径上 set MY TOOL C Program Files x
  • 从命令行运行 R 脚本

    我有一个文件 名为a r 它有一个chmod of 755 sayHello lt function print hello sayHello 我如何通过命令行运行它 Answer recommended by R Language col
  • 编译过程

    谁能解释一下编译是如何工作的 我似乎无法弄清楚编译是如何工作的 更具体地说 这是一个例子 我正在尝试在 MSVC 6 中编写一些代码来加载 Lua 状态 我已经 设置库的附加目录并将文件包含到正确的目录中 使用 extern C 因为 Lu
  • nmake 无法使用 VS 2012 编译 TSF 示例

    我正在尝试建立文本服务框架示例代码 http archive msdn microsoft com tsf Release ProjectReleases aspx ReleaseId 1755在 Windows 8 RC 64 位上使用
  • 找不到 com.android.tools.build:gradle:3.0.0 [重复]

    这个问题在这里已经有答案了 当我尝试从命令行构建可能的 Android 项目时 我收到以下错误消息 配置项目 mylib 时出现问题 无法解析配置 mylib classpath 的所有文件 找不到 com android tools bu
  • 该模块的调试信息中缺少源信息 - PDB 已成功加载

    Visual Studio 加载正确的 PDB 文件 但无法找到解决方案中任何内容的源信息 我尝试过的事情 清理 重新启动 重新生成项目 CMake 重建 检查模块窗口以确保 PDB 已加载 确实如此 解决方案属性下的 调试源文件 设置混乱
  • 如何访问命令行参数? [复制]

    这个问题在这里已经有答案了 我使用 python 创建项目设置设置 但我需要帮助获取命令行参数 我在终端上尝试过 python myfile py var1 var2 var3 在我的 Python 文件中 我想使用输入的所有变量 Pyth
  • C++串口问题

    我在 Visual Studio 上使用 C 连接到任何串行端口 想要与 Arduino 交换 时遇到问题 我正在使用串行类 http www arduino cc playground Interfacing CPPWindows在 Ar
  • 新显卡上的 nvoglv32.dll 中的绘制调用崩溃

    几天前 由于一些硬件更改 我设置了计算机并安装了新的 Windows 8 副本 其中 我将显卡从 Radeon HD 7870 更改为 Nvidia GTX 660 再次设置 Visual Studio 11 后 我从 Github 下载了

随机推荐

  • 从控制台应用程序退出的正确方法[重复]

    这个问题在这里已经有答案了 我读过一些书here https stackoverflow com questions 12180512 exit from a console application in c sharp and here
  • React hooks 状态不使用最新版本

    我有下面的代码 我想在其中创建标签列表 在此示例中 我正在获取标签列表setAllTags 然后是一些可用的标签setAvailableTags 那么我遇到的问题是当setAvailableTags 运行它将删除在中获取的标签setAllT
  • 将 SQL 查询映射到 Nhibernate 中的业务对象

    我想将 SQL 查询映射到Business object using Nhibernate 员工表中有很多字段 但我只得到三个字段 并且只想映射那些字段 这是我的sql查询
  • 移动并修复手机 iOS 上录制的视频的 moovatom

    问题是如何找到并移动 iOS 设备上录制的 mov 文件的 moov 原子 以便可以通过 http 进行流式传输 有一种方法可以做到这一点 但这需要将其导出到文件 理论上这会让您复制整个文件 然后您就可以流式传输它 还有其他方法可以做到这一
  • Flask Admin 不显示所有字段

    我有这样的模型 class User db Model tablename users table args mysql engine InnoDB mysql charset utf8 id db Column db Integer pr
  • Android键盘滑动动画

    我对 Android 中的动画几乎没有 阅读 没有 经验 但想在键盘出现时实现动画 实际上 整个 Activity 看起来都在向上滑动 就像键盘位于 Activity 下方并将其向上推一样 而不是仅向上移动到所选的位置EditText 有谁
  • 猫鼬聚合框架中按日期排序

    我正在使用 mongoose 开发一个 nodejs mongodb 项目 现在我遇到了一个我不知道答案的问题 我正在使用聚合框架来获取分组结果 分组是在不包括时间数据字段的日期完成的 例如 2013 02 06 代码如下所示 MyMode
  • 在 CTE 内设置变量

    这是我第一次使用 SQLServer 2012 我的代码不起作用 CREATE PROCEDURE ReadCodeBuffer gint bigint pres tinyint level bigint quantity smallint
  • Python 需要 GIL。但 Jython 和 IronPython 没有。为什么?

    为什么您可以运行 Jython 和 IronPython 而无需 GIL 但 Python CPython 需要 GIL 解释器的某些部分不是线程安全的 尽管主要是因为通过大量使用锁使它们全部线程安全会极大地减慢单线程速度 source h
  • 使用 Leak Canary 防止误报

    我们观察到 Leak Canary 有很多误报 即 Leak Canary 检测到存在泄漏 但随后返回消息 LeakCanary NO LEAK FOUND 我认为这是因为GC没有及时声明对象 我们可以采取什么措施来减少这些误报 带过滤器查
  • C#,检测Windows上选定的文本?

    我会制作一个类似谷歌工具栏翻译功能的工具 但它是针对桌面的 我想做的是 在任何应用程序 word pdf liveMessenger等 中突出显示文本 并通过谷歌翻译API进行翻译 作为工具提示返回 我搜索了有关监视文本的msdn 我只发现
  • Imagemagick“mogrify -strip”-更改图像?

    In my 最后一个问题 https stackoverflow com questions 24683912 imagemagick depth convert询问转换和位深度 所以 这样做 convert in png out eps
  • 各种 .NET Framework 版本的操作系统兼容性

    每个 Net 框架的最低操作系统要求是什么 例如 对于哪个版本不可能运行每个操作系统 视窗95 视窗98 视窗98SE 视窗ME Windows NT 3 x 视窗NT 4 视窗2000 我相信所有 Net 框架都与 XP Vista Wi
  • 如何使用 Eclipse RCP 的打印选项打印 jasper 报告?

    我的问题 我在 Eclipse RCP 应用程序中有一个 ViewerComposite 它显示集成到其中的 Jasper Report jrxml 此 ViewerComposite 中显示的报告可以导出为 PDF RTF XML jrx
  • Krakenex API 多对查询

    我正在尝试使用 Krakenex python 库一次查询多个货币对的订单簿 当我对单一货币执行此操作时 这是有效的 如下所示 con krakenex API con load key kraken key con query publi
  • 创建一个处理 DatabaseFactory 的 DbContext 以更轻松地使用 DapperExtensions

    这几天我尝试使用一些基本的 CRUD 函数创建一个抽象的基础存储库简洁的扩展 https github com tmsmith Dapper Extensions 但作为示例给出的代码使用 SqlConnection 来连接到 SQL Se
  • .NET Core 项目与 .NET Framework 中为 System.Data.DataTable 生成的 JSON 的变化

    下面的程序在 NET Core 项目与 NET Framework 应用程序中运行时生成不同的 JSON Code class Program internal static readonly MediaTypeFormatter Defa
  • openlayers3如何始终启用徒手绘制

    在 OpenLayers3 v3 5 中 如何始终启用徒手绘制 默认启用徒手绘制是通过freehandCondition的财产ol interaction Draw 当前默认设置为 Shift 键 draw new ol interacti
  • “致命错误:无法找到本地 grunt。”在 Windows 7 上

    我根本无法让 grunt 在 Windows 7 上工作 按照 Grunt 网站上的说明进行操作 http gruntjs com getting started http gruntjs com getting started 我已经跑了
  • 如何合并多个 PDB 文件?

    我们目前正在使用单个命令行工具在 Windows 和 Linux 上构建我们的产品 到目前为止 它工作得很好 允许我们从源代码构建 并且具有比我们之前的任何构建系统所允许的更精细的依赖关系 这为我们带来了强大的增量和并行构建能力 为了简要描