如何在Chromium中构建Crashpad 尽量无需重新编译Chromium
Windows 10 环境Chromium增量构建内置Crashpad方案
无需重新编译整个Chromium,按以下步骤操作即可完成适配:
- 调整GN构建参数
进入你之前编译Chromium使用的输出目录(通常为out/Default,如果自定义过输出路径替换成对应目录即可),打开目录下的args.gn文件,追加以下配置项:
保存文件后回到Chromium源码根目录,执行crashpad_handler = true is_crashpad_enabled = true enable_crash_reporter = truegn gen out/Default更新构建规则,该操作仅刷新构建映射关系,不会触发全量编译。 - 定向编译Crashpad相关目标
在源码根目录执行以下命令,仅编译Crashpad组件、关联适配层和handler进程:
该命令不会编译Chromium其余无关模块,编译耗时取决于机器性能,通常为数分钟到十余分钟。如果之前主程序没有代码改动,编译过程不会重新生成chrome.exe主程序文件。autoninja -C out/Default crashpad chrome_crashpad_handler - 验证生效
编译完成后先确认输出目录下存在crashpad_handler.exe文件,之后在输出目录执行chrome.exe --enable-crashpad,打开任务管理器查看Chrome进程列表,即可看到正常拉起的crashpad_handler子进程。
注意事项
- 禁止直接使用之前单独编译的Crashpad二进制替换:独立拉取编译的Crashpad版本和当前Chromium代码提交版本不匹配,会出现IPC通信失败、崩溃元数据缺失、进程拉起异常等兼容性问题,必须在Chromium源码树内编译对应版本的Crashpad。
- 如果执行完上述步骤依然无法拉起crashpad_handler,检查
args.gn中是否存在exclude_crashpad=true、disable_crash_reporter=true这类手动添加的禁用开关,删掉后重新执行gn gen和定向编译命令即可。 - 如果你使用的是component编译模式,定向编译完成后会自动更新Crashpad相关的动态链接库,无需手动拷贝文件。
内容的提问来源于stack exchange,提问作者HamsterGamer
相关产品推荐
相关产品推荐

