多平台崩溃报告?

4

如何在跨平台的C++应用程序中实现崩溃报告?(包括Windows、Mac和Linux)

已经研究了Google Breakpad,但尝试让Socorro(UI)工作几周没有成功。

编辑:@Nim为了澄清,当发生异常时,我想将堆栈跟踪发送到我的服务器。


你想要外部代理来监视你的进程吗?(如果是这样,使用“开源监控”在谷歌上搜索会出现很多操作系统解决方案(如Nagios,Zabbix等)。)还是你想要一个基础设施来允许你的进程发送信息?应该让问题更加清晰明了... - Nim
2个回答

5
当我们开始跨平台(之前只能在Windows上运行)时,我们花了很多时间研究可能的工具来解决这个问题。Google Breakpad确实是目前最好的跨平台解决方案。
你们的问题是Socorro,它非常庞大、混乱且难以理解。我可以提出两种方案:
1. 放弃当前版本的Socorro,因为它太过于喜欢新潮的开源软件(如Hadoop),回到Socorro 1.x。你需要做更多的工作来设置处理器,并将转储文件放入Postgres表中,但你会有更少的移动部件和疯狂的基础设施要处理。
2. 完全忘记Socorro,编写自己的Breakpad转储处理器和UI来查看它们。Breakpad已经完成了真正困难的工作——解析符号和捕获异常——所以你只需要编写一个收集器,让转储文件可以上传到它,然后在它们上运行Breakpad处理器的服务器,一个存储处理结果的地方,以及一个用于查看处理结果的界面。
现在我们知道了这些,我们可能会选择第二个选项,而不是尝试集成Socorro - 已经花费我们的时间找到适合我们并将其适应到我们的工作流程的版本已经超过了编写一个完全符合我们要求的系统所需的时间。

2

我怀疑除了google-breakpad作为win/mac/linux的一体化解决方案之外,没有可靠的解决方案。你最好使用跨平台日志记录库来处理SEH异常,并在需要minidumps时使用windbg(这里有一些很好的资源:http://www.debuginfo.com/articles.html)。


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