程式崩潰後如何更好的反饋資訊

2021-09-08 03:32:08 字數 1029 閱讀 1432

我們使用windows都知道,整個windows和微軟提供的應用軟體的穩定性和崩潰後的體驗是逐步提公升的。在大牛的作品《軟體除錯》 中有描述。

在windows下,軟體出錯,常見的報告手段:

1、事件日誌:這裡記錄了很多關鍵的錯誤資訊

2、崩潰報告:可以自動提交錯誤的資訊,或者手動提交,以不斷的改進軟體和方便排錯

3、專用的日誌工具:如netmon,sysinternal等

那我們的軟體在崩潰後如何處理呢?主要目的:

1、方便我們的排錯

2、提供更好的使用體驗

最近在設計乙個應用系統時對這個問題進行處理。

這方面有比較多的參考:

首先在stackoverflow上可以看到,c++ release  program crashes report 

以上有比較多的框架和工具

windows應用程式處理的乙個框架和詳細參考資料

google breakpad

google breakpad

是乙個非常實用的跨平台的崩潰轉儲和分析模組,他支援windows,linux和mac和solaris。由於他本身跨平台,所以很大的減少我們在平台移植時的工作,畢竟崩潰轉儲,每個平台下都不同,使用起來很難統一,而google breakpad就幫我們做到了這一點,不管是哪個平台下的崩潰,都能夠進行統一的分析。現在很多任務程都在使用他:最著名的幾個如chrome,firefox,picasa和google earth。另外他的license是bsd的,也就是說,我們即便是在商業軟體中使用,也是合法的

除錯release發布版程式的crash錯誤

對於託管程式也有good crash reporting library in c#

順便看到了這個比較有意思的內容,35個你也許不知道的google開源專案 

由於我的應用 需要處理跨平台問題,因此使用了google breakpad

順便把整理的資料放在了skydriver上,   

FastDB程式崩潰後的鎖清理

fastdb在為了保證資料同步,使用了sem作為鎖機制,同時還使用了shm作為記錄讀寫操作計數器,所以如果程式異常中止,沒有正常的close commit資料的話,同時訪問該庫的程式將會被掛死。在自帶的文件中,作者提出如果出現這種情況,把所有使用這個庫的程式退出後,重新啟動就好了。這個基本能解決問題...

FastDB程式崩潰後的鎖清理

fastdb在為了保證資料同步,使用了sem作為鎖機制,同時還使用了shm作為記錄讀寫操作計數器,所以如果程式異常中止,沒有正常的close commit資料的話,同時訪問該庫的程式將會被掛死。在自帶的文件中,作者提出如果出現這種情況,把所有使用這個庫的程式退出後,重新啟動就好了。這個基本能解決問題...

Linux下的C 程式崩潰時列印崩潰資訊

在某些極端情況下,原本正常執行的程式發生了崩潰。這時候想通過除錯是很難發現出錯的地方的,所以在崩潰時列印出錯點的呼叫堆疊是十分有必要的。使用的命令 catchsegv program args 例如 我們的程式是test,則可在控制台輸入 catchsegv test 如果使用gcc g 編譯tes...