Google的Breakpad和Crashpad库有什么区别?

15

它们都是崩溃报告生成库,可以生成小Dump供开发者分析,两者都由Google的Chromium项目开发:

breakpad

crashpad

它们的使用情况有什么不同吗?


4
Crashpad是较新的工具,我认为它在一些新平台上有更好的支持计划。Breakpad被许多大型开源项目在Windows、Linux和Mac(可能也包括Android)上使用,例如Mozilla Firefox、Chromium(不是所有平台)、LibreOffice(仅限于Windows和Linux)。我最后一次深入研究它是在2016年,当时Breakpad至少对桌面应用程序而言更为成熟,但我感到Crashpad的开发更为积极。 - moggi
@moggi 请将答案发布为回答。 - Lightness Races in Orbit
2个回答

8
请参阅Crashpad公告了解其开发原因。
Crashpad与Breakpad的主要区别在于,Crashpad可以支持Mac OS X 10.10及更高版本的进程外崩溃报告,而Breakpad的设计无法支持。
请参阅Sentry的Breakpad文档中的说明:

Breakpad使用进程内崩溃报告,这种方法不够强大,与进程外崩溃报告相比有几个劣势。

(这可能只适用于macOS 10.10+)

2
/ Breakpad Crashpad
OSX-10.10+/in-process
OSX-10.10+/out-process
/ Breakpad Crashpad
iOS-5.0+/in-process
tvOS/in-process
watchOS/in-process

回复 @Lindeijer

请参阅 Breakpad文档 中的说明:

与Crashpad相反,Breakpad使用进程内崩溃报告。这种方法不够稳定,并且相对于进程外崩溃报告有几个劣势。除非您已经集成了Breakpad,否则我们强烈建议您考虑改用Crashpad。

这是有关于 Sentry 的文档,而不是 Breakpad 的文档。
实际上,Breakpad 支持 Windows/Linux/MacOSX(pre-10.10) 上的进程内和进程外异常处理。参见https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/exception_handling.md

如果你要回复,请在我的答案下留言。现在我偶然发现了你写的答案,是在你写完三年后。 :-) 你是正确的,链接文档是用于将Breakpad与Sentry配合使用的。但是我从来没有在我的答案中宣称Breakpad不支持进程崩溃报告,只是说它在macOS 10.10+上无法实现这一功能。 - Thorbjørn Lindeijer
啊,我引用的文本确实说了这个。也许这只适用于在Sentry中使用Breakpad的情况。无论如何,我已经做了一些小的更正。还有,哎呀,不是三年后……我把“Sep 18”误读成了2018年9月! - Thorbjørn Lindeijer
抱歉,我之前没有足够的积分来发表评论。 - Sunbreak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接