Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

深入理解 Vista 故障處理機制:核心傾印提前、應用程式錯誤報告服務化

編輯:Windows Vista 教學

核心故障傾印 (Kernel Crash Dump) 提前啟用

舊版 Windows (XP/2003): 需等待會話管理器 (Smss.exe) 初始化分頁檔案後,才能建立核心傾印檔。但大量驅動程式在 Smss.exe 啟動**前**就已初始化 (啟動類型為 "Boot"),早期開機藍畫面無法產生傾印檔,排查極難。

Vista 改進: 在所有「Boot」類型驅動載入完成、**「System」類型驅動載入前**,即初始化傾印支援。並以 **64 KB 區塊**寫入傾印檔 (舊版 4 KB),大容量記憶體傾印速度提升 **10 倍**。

  • Boot 驅動: 由 Boot Loader 載入,缺少則無法繼續開機 (如磁碟控制器、檔案系統、鍵盤)。
  • System 驅動: 核心初始化階段載入 (如顯示卡、網卡、聲卡)。

結果:開機早期藍畫面也能產生傾印檔,微軟線上故障分析 (OCA) 可自動分析回報根因。

應用程式故障處理服務化 (Windows Error Reporting - WER)

舊架構 (XP): 應用程式崩潰 → 執行例外處理常式 → 載入 DWWIN.EXE (應用程式錯誤報告) → 顯示錯誤對話框。
**缺陷:** 若主執行緒堆疊損毀,例外處理常式本身崩潰,錯誤對話框無法顯示,使用者不知發生何事,無法回報。

Vista 新架構:

  1. 應用程式崩潰 → 例外處理常式發送訊息給 **WER 服務** (運行於 svchost.exe 內,實作為 wersvc.dll)。
  2. WER 服務載入 WerFault.exe 顯示錯誤報告對話框 (獨立於崩潰進程)。
  3. 若例外處理常式因堆疊耗盡反覆崩潰,核心偵測到此狀態 → 直接通知 WER 服務 → 由 WER 服務啟動 WerFault.exe。

**關鍵優勢:** 錯誤報告 UI 與崩潰進程分離,即使主執行緒堆疊完全損毀,仍能可靠顯示錯誤對話框、收集傾印、上傳微軟分析。

圖示對比 (原文四圖)

  • 圖 1:XP 架構 — Accvio.exe (測試程式) 直接啟動 DWWIN.EXE,共用進程空間。
  • 圖 2:XP 錯誤對話框。
  • 圖 3:Vista 架構 — Accvio.exe 崩潰 → svchost.exe (WER 服務) 啟動 WerFault.exe,完全隔離。
  • 圖 4:Vista 錯誤對話框 (更詳細、可檢視技術細節、上傳選項)。

開發者/管理員實務啟示

  • 系統傾印檔預設位置:%SystemRoot%\MEMORY.DMP (核心完整傾印)、%SystemRoot%\Minidump\*.dmp (小型傾印)。
  • 應用程式傾印檔:%LocalAppData%\CrashDumps\ (需登錄啟用 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps)。
  • 分析工具:WinDbg (Windows Debugging Tools)、BlueScreenView (NirSoft)、WhoCrashed (自動分析)。
  • 群組原則可設定 WER 行為:Computer Configuration\Administrative Templates\Windows Components\Windows Error Reporting (強制佇列模式、不顯示 UI、指定伺服器等)。

總結

Vista 將故障處理從「進程內」移至「服務層」,並大幅提前核心傾印可用時機,奠定了現代 Windows (7/8/10/11) 穩健診斷基礎。理解此架構有助於正確設定傾印類型、分析藍畫面/應用程式崩潰根因。

Copyright © Windows教程網 All Rights Reserved