2010-03-08 73 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