2010-03-08 71 views

回答

1

Google崩溃处理程序似乎是在其他应用程序中发生某些情况时得到通知的应用程序。

如果您选择向某些Google软件(例如Google Chrome)发送匿名使用情况统计信息和崩溃报告,GoogleCrashHandler.exe可以在您的计算机上持续运行,它有助于在您的Google软件意外发送时向Google发送崩溃详细信息关闭我们使用这些数据来帮助确定如何防止这些错误在未来发生

我会创建一个Windows服务,在后台运行,通过命名管道,tcp,文件放置或其他任何好方法。

然后该服务会将收集到的信息发送到特定服务器(或服务器列表) 。它可以作为一个缓冲区,所以你不必每次在内部得到通知时都向服务器发送通知。

当服务器准备好泄漏它的bean时,我会让服务调用服务器上的Web服务。

创建之后应该能够检查,如果你的“崩溃处理”正在运行,并在适当的时候通知其有关错误或异常等,每个应用程序

然而,因为这种行为可能会跳闸,一些地方的防火墙程序,用户可能会质疑哪些数据正在发送以及什么时候发生,您需要记录这些数据,并且非常清楚您正在收集哪些数据,为什么要收集数据以及发送数据的位置。

+0

同意。我认为使用文件系统监视器来查看其他程序的崩溃报告的Windows服务将是最简单的实现。 – smencer 2010-03-09 00:00:01

4

这适用于非托管代码(Google的所有代码都是)。通常情况下,应用程序会打开一个命名管道与崩溃处理程序对话并告诉它开始观看应用程序。崩溃处理程序然后将一个命名的事件添加到它观看的列表中。当应用程序崩溃时,使用SetUnhandledExceptionFilter()安装的应用程序中的异常过滤器将获得控制权。该异常过滤器然后打开命名的事件。崩溃处理程序会立即发出通知,并且需要崩溃的应用程序的小型转储程序并上传它。并终止该应用程序。

像这样的崩溃处理程序是必要的,因为崩溃的应用程序不能被信任,以便在心脏病发作时仍能正常运行。微软也有一个,它是在Windows中构建的。称为WER,Windows错误报告。当碰撞应用询问你是否可以让微软知道崩溃时,这就是你看到的对话框的来源。

对于托管应用程序,这种方法是不必要的。它们几乎不会死于非托管应用程序死亡的硬件异常(如AccessViolation)。只需编写AppDomain.UnhandledException事件的代码即可。

+0

我希望我可以检查2个答案。 – jaysonragasa 2010-03-09 06:44:06