2011-05-16 160 views
4

在C++(windows,mac,linux)的跨平台应用程序中实现崩溃报告的最佳方式是什么?看着谷歌breakpad,但花了几个星期努力使socorro(UI)的工作无济于事。多平台崩溃报告?

编辑:@Nim清除,当发生一些异常时,我想发送一个堆栈跟踪到我的服务器。

+0

您是否希望外部代理监控您的流程(在这种情况下,通过“OpenSource监控”在Google上进行搜索会显示相当多的操作系统解决方案(Nagios,Zabbix等)或者是否希望基础架构允许您过程发送的东西?应该使问题有点清楚... – Nim 2011-05-16 10:29:56

回答

5

当我们去跨平台(从以前的Windows平台),我们花了很多时间研究可能的工具。 Google Breakpad确实是那里最好的跨平台解决方案。

您的问题是索科罗,这是巨大的,混乱和混乱。我可以建议两条路线:

  • 放下当前版本的Socorro,这对于像Hadoop这样的新型OSS玩具来说太过于热爱了,并且会回滚到Socorro 1.x.你需要做更多的工作来设置你的处理器,并且你的转储将被放到Postgres表中,但是你将不需要移动部件和疯狂的基础设施来处理。
  • 忘掉Socorro,并编写自己的Breakpad转储处理器和用户界面来查看它们。 Breakpad已经完成了非常艰苦的工作 - 解析符号和捕捉异常 - 所以你需要编写的是一个转储可以上传到的收集器,一个在其上运行Breakpad处理器的场,一个用于存储处理结果,以及查看它们的东西。

知道我们做什么,现在,我们就可能已经走了与第二个选项,而不是试图整合索科罗—它采取我们能够找到一个版本索科罗是为我们工作的时间量,并使其适应我们的工作流程已经超过了我们只需要编写一个完全符合我们需要的系统。

+2

对于第二个选项,有https://github.com/atom/mini-breakpad-server – legalize 2015-06-04 06:25:46

2

我怀疑除了google-breakpad作为win/mac/linux一体化解决方案之外,还有一个可靠的解决方案。你最好的选择是使用跨平台的日志库,并处理SEH异常,如果你需要小转储,可以使用windbg(这里有一些很好的资源:http://www.debuginfo.com/articles.html