使用 WER
從 Windows Vista 開始,Windows 預設會提供當機、非回應和核心錯誤報表,而不需要變更您的應用程式。 如有需要,報告會包含迷你傾印和堆積傾印資訊。 應用程式會改用 WER API,將應用程式特定的問題報告傳送給 Microsoft。
因為 Windows 會自動報告未處理的例外狀況,所以應用程式不應該處理嚴重例外狀況。 如果錯誤或沒有回應的程式是互動式的,WER 會顯示通知使用者問題的使用者介面。 當使用者嘗試與應用程式互動時,如果應用程式未回應 Windows 訊息,則會被視為沒有回應。
Windows 錯誤報告當機、非回應和核心錯誤的流程
以下顯示應用程式損毀、非回應或核心錯誤所發生的步驟。
- 發生問題事件。
- 作業系統會叫用 WER。
- WER 會收集資料、建置報表,並視需要提示使用者同意 () 。
- 如果使用者同意,WER 會將報告傳送至 Microsoft (Watson Server) 。
- 如果 Watson 伺服器要求其他資料,WER 會收集資料,並視需要提示使用者同意 () 。
- 如果應用程式已註冊復原並重新啟動,WER 會在壓縮資料時執行已註冊的回呼函式,並在使用者同意) 時傳送至 Microsoft (。
- 如果 Microsoft 提供問題的回應,使用者會收到通知。
應用程式可以使用下列函式來自訂傳送給 Microsoft 的報告內容。 註冊函式會指示 WER 在錯誤報表中包含它所建立的特定檔案和記憶體區塊。
- WerRegisterFile
- WerRegisterMemoryBlock
- WerSetFlags
- WerUnregisterFile
- WerUnregisterMemoryBlock
- WerGetFlags
泛型附隨報告的Windows 錯誤報告流程
下列步驟顯示應用程式如何取得非嚴重錯誤狀況的錯誤報表。
- 發生非嚴重問題事件。
- 應用程式會辨識 事件,並使用下列函式呼叫序列來產生報表。
- 呼叫 WerReportCreate 函式來建立報表。
- 呼叫 WerReportSetParameter 函式來設定報表參數。
- 呼叫 WerReportAddFile 函式,將檔案新增至報表。
- 呼叫 WerReportAddDump 函式,視需要將迷你傾印新增至報表 () 。
- 呼叫 WerReportSubmit 函式以傳送報表。
- 呼叫 WerReportCloseHandle 以釋放資源。
- 根據在步驟 2 中呼叫函式時所使用的特定選項,WER 將會完成錯誤報表。 WER 可確保報告會根據使用者所設定的原則來完成。 例如,WER 會將報表傳送給 Microsoft、將報表排入佇列,並向使用者顯示適當的使用者介面。
從Windows 錯誤報告排除應用程式
若要從 Windows 錯誤報告中排除您的應用程式,請使用 WerAddExcludedApplication 函式 。 若要還原應用程式的錯誤報表,請使用 WerRemoveExcludedApplication 函式 。
自動復原資料並重新啟動錯誤的應用程式
應用程式可以使用應用程式復原和重新開機,在應用程式因未處理的例外狀況或應用程式停止回應而結束之前儲存資料和狀態資訊。 如果要求,應用程式也會重新開機。 如需詳細資訊,請參閱 應用程式復原和重新開機。
舊版 API
應用程式可以呼叫 ReportFault 函式來報告錯誤。 不過,除非您有作業系統的預設錯誤報表行為無法滿足的特定需求,否則不應該使用 ReportFault 函式。
如果啟用錯誤報表,系統會向使用者顯示一個對話方塊,指出應用程式發生問題,且將會關閉。 如果 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug 機碼中設定了偵錯工具,則會提供使用者啟動偵錯工具的選項。 使用者也會獲得將報表傳送給 Microsoft 的選項。 如果使用者傳送報表,系統會顯示另一個對話方塊,感謝使用者提供報表的連結,並提供更多資訊的連結。
錯誤報表系統支援下列作業模式。
作業模式 | 描述 |
---|---|
共用記憶體報告 | 如果應用程式的安全性內容與登入使用者的安全性內容相同,錯誤報表系統會使用共用記憶體區塊進行通訊。 此模式無法與資訊清單報告模式搭配使用。 |
資訊清單報告 | 如果應用程式的安全性內容與登入使用者的安全性內容不同,錯誤報表系統會使用檔案進行通訊。 此模式也用於報告沒有回應的應用程式和核心錯誤。 此模式無法與共享記憶體報告模式搭配使用。 |
網際網路報告 | 錯誤報表系統會透過網際網路傳送所有資料給 Microsoft。 這是預設作業模式。 無法與公司報告模式搭配使用。 當系統管理員未指定公司上傳路徑時,就會使用此模式。 |
公司報告 | 錯誤報表系統會將所有資料傳送至檔案共用,而不是將它直接上傳至 Microsoft。 這可讓公司 IT 經理先檢閱資料,再傳送給 Microsoft。 當系統管理員指定的公司上傳路徑時,會使用此模式。 無法與網際網路報告模式搭配使用。 |
無周邊報告 | 錯誤報表系統不會向使用者顯示任何對話方塊。 這可讓公司 IT 經理隨時從員工收集錯誤報表。 當系統管理員啟用報告時,會使用此模式,但會停用通知。 它只能與公司報告模式搭配使用。 |
若要從錯誤報表中排除您的應用程式,請使用 AddERExcludedApplication 函式 。