BSOD

**藍白當機畫面**（英語：Blue Screen of Death，縮寫為：BSoD）指的是微軟 Windows 作業系統在無法從一個系統錯誤中恢復過來時所顯示的螢幕圖像。

當 Windows 9x 出現 BSOD 錯誤時，通常會顯示兩次 BSOD 畫面。

Windows NT 系列（包括 Windows 2000、Windows XP 等）的穩定性高於 Windows 9x，當 Windows NT 出現致命錯誤而必須重新啟動時，會顯示 BSoD 畫面。BSOD 畫面上所顯示的資訊會有偵錯碼，例如：STOP: 0x0000004e，以及其簡短的錯誤訊息，使用者可以在微軟的技術支援網站 （頁面存檔備份，存於網際網路檔案館）搜尋此偵錯碼出現時可能是什麼原因。但有時錯誤碼並不能讓使用者很快的找到導致藍白當機的原因，反而會誤導使用者，因此可能要以試誤法（trial and error）才能找出原因。

Windows 9x/ME 發生之 BSoD 允許使用者選擇繼續或者重新啟動。但是，VxD 一般不隨便顯示 BSoD──它們一般只在一個不通過重新啟動就無法修復的錯誤發生時才顯示 BSoD，因此當 BSoD 顯示時，系統已經不穩定或當機。在 Windows 9x 時代，出現藍白畫面的最常見原因是 DLL 衝突，意即同一個 DLL 的多個版本造成的不相容；當應用程式需要使用這些 DLL 時，Windows 將它們載入到記憶體；如果替換了 DLL，下一次應用程式載入 DLL 時它可能不是該應用程式所希望的版本，且這種不相容性隨著安裝更多的新軟體而增加。Windows NT 系列的穩定性明顯優於 Windows 9x，發生藍白當機的機率遠低於 Windows 9x。

## 歷史

藍白當機畫面自 Windows 1.0 就已經存在。在 Windows 1.x-2.x 中，當 Windows 發現了版本過高的 DOS 系統時，它將會在繼續啟動前顯示一個藍底白字的介面「Incorrect DOS version」和一個列有核心模組及它們各自記憶體位址的列表。不過，這個藍白當機畫面仍並非真正的系統錯誤；當真正的錯誤發生時，系統反而會鎖死，或直接登出到 DOS。Windows 3.0 中設計了一個專門用來顯示重要系統資訊的對話方塊，這些資訊通常會來自 386 增強模式下的驅動程式，或其他無法正常執行的程式。

在 Windows 3.1 中，這一對話方塊由黑色改為了藍色，並且會在按下 Ctrl+Alt+Del（用於打開工作管理員）時出現，如果當時沒有無回應的程式。當系統錯誤足夠嚴重時，Windows 3.x 仍然會直接登出到 DOS。

現在通常所說的藍白當機畫面介面在 Windows NT 3.1（Windows NT 系列的首個系統，發布於 1993 年）中首次出現，並延續到了之後的所有 Windows 系統中。藍白當機畫面介面通常由編寫不良的驅動程式或故障的硬體引起，如記憶體故障、供電問題、過熱或超出其規格限制的硬體。在 Windows 9x 的時代，系統核心中不完整的動態連結庫或 bug 也會導致藍白當機畫面。Windows 9x 相比於後續的 Windows 版本，藍白當機畫面非常常見。

## 格式

在 Windows 8 和 Windows Server 2012 之前，藍白當機畫面都以皇室藍為背景色顯示銀色的文字，這些文字包含了當前記憶體和暫存器的值。Windows Server 2012、Windows 8 和 Windows 10 則使用了蔚藍色作為背景。

Windows 95、98 和 ME 的藍白當機畫面介面顯示使用了 80×25 的文字模式。Windows NT 系列使用的是 720×400 解析度、80×50 的文字模式。Windows XP、Vista 和 7 的藍白當機畫面中使用了 Lucida Console 字型。Windows 8、Windows Server 2012 使用 Segoe UI，並使用引導影格緩衝（the boot framebuffer）來顯示內容，在 UEFI 的機器上使用最高的可用圖形輸出協定模式（Graphics Output Protocol mode），在傳統 BIOS 的機器上使用 1024×768（假設顯示器是扁平橫向放置的）或最高的 VESA 基本輸入輸出系統擴充模式（如果引導組態資料庫中設定了最高模式，'highestmode'）。Windows 10 版本 1607 以後的藍白當機畫面介面與 Windows 8 相同，但多了一個通向微軟公司官網的二維條碼，網頁主要是微軟公司對藍白當機畫面原因的群眾調查。

雖然名叫「藍白當機畫面」，但在 Windows 9x 時代，藍白畫面畫面的顏色可以由使用者自訂；而在 2016 年 9 月及之後的 Windows 預覽版本中，藍白當機畫面變成了深綠色，以和正式版本的 Windows 藍白畫面做區分，方便開發人員快速分辨版本。

## Windows NT

在 Windows NT 的系列作業系統中，當核心或者執行在核心模式中的驅動程式發生無法修復的錯誤時，就會發生藍白當機畫面。此處的藍白當機畫面官方名稱為停止錯誤（stop error），在 Windows 的軟體開發套件（SDK）與驅動開發工具包（DDK）文件中也被稱為「錯誤檢查」（bug check）。它通常是被一般保護錯誤引起的。此時，作業系統能採取的唯一安全手段只有重新啟動電腦；而作為結果，使用者甚至沒有機會來儲存未儲存的資料。

藍白畫面畫面中顯示的文字包括了錯誤碼和它的名稱（如「0x0000001E, KMODE\_EXCEPTION\_NOT\_HANDLED」），並在隨後用括號括住四個與錯誤相關的值以方便維修。根據錯誤的不同，它可能還會顯示問題發生的記憶體位址，以及在該位址下載入的驅動程式。此外，在螢幕的第二和第三部分可能還會分別顯示所有已經載入的驅動程式和堆疊轉儲資訊，而所給的驅動程式資訊分為三列，每一列分別是驅動程式的基位址、驅動程式的建立日期和驅動程式的名稱。

預設情況下，Windows 會在錯誤發生時建立一個記憶體轉儲檔案，根據 Windows 版本的不同它可以小至 64kB（小型轉儲），也可以大至 RAM 的完整複製（完全轉儲）。這個檔案稍後可以使用除錯器（一般是 WinDbg）進行除錯。除錯器是進行堆疊追蹤所必需的；並且由於藍白畫面中的資訊很有限，可能會造成誤導或隱藏真正的原因，因此確定藍白畫面的真正原因也需要它的參與。

在預設情況下，Windows XP 被組態為只儲存 64kB 的迷你轉儲檔案，然後自動重新啟動電腦。由於這一過程發生的非常迅速，藍白畫面可能只會一閃而過甚至完全看不到，因此使用者也很容易把它當作電腦隨機重新啟動的故障，直到重新啟動完成後 Windows 提示剛剛曾發生過嚴重的錯誤。當然，可以通過關閉控制面板中「系統屬性 — 進階 — 啟動和故障恢復 — 系統失敗」中的自動重新啟動來達到顯示藍白畫面的目的。

Windows 還可以被設定為將除錯資訊即時傳送到在另一台電腦上執行的核心除錯器。如果此時發生了停止錯誤，Windows 將會暫停執行並且中斷除錯器，而不是顯示藍白畫面；之後，就可以用除錯器檢查記憶體的內容並尋找問題的原因了。

藍白當機畫面也可能由嚴重的引導載入程式錯誤引起。在該錯誤中，Windows 由於儲存驅動程式錯誤、檔案系統損壞或其他類似的問題而無法存取引導分割區。它的錯誤碼是 STOP 0x0000007B (INACCESSIBLE\_BOOT\_DEVICE)。在這種情況下，Windows 將不會儲存任何記憶體轉儲檔案。由於此時 Windows 無法從硬碟啟動，因此要想修復這種錯誤就需要使用在 Windows 安裝盤中所附帶的工具。

### 細節

在 Windows Server 2012 之前，藍白當機畫面介面會顯示一個大寫的錯誤名稱（例如 APC\_INDEX\_MISMATCH）、一個十六進位的錯誤碼（如 0x00000001）和四個參數。一般的顯示格式如下：

> 錯誤碼 (參數 1, 參數 2, 參數 3, 參數 4) 錯誤名稱
> 
> 

根據錯誤碼及其性質，參數可能會指出錯誤的原因和 / 或位置。此外，藍白畫面介面上還會顯示四段一般性的解釋與建議，有時也會指出其他的技術資訊，例如出錯檔案的名稱和記憶體位址。

而隨著 Windows Server 2012 的發布，藍白當機畫面的介面大幅改動並刪去了以上的所有資訊，只留下了錯誤名稱和一段簡短的描述。Windows 8 加入了一個哭臉的顏文字。不過，十六進位的錯誤碼和參數仍然能在事件檢視器和記憶體轉儲檔案中被查詢到。從 Windows 10 版本 14393 開始，增加了一個用於快速故障排除的二維條碼。

## 不同版本的 Windows 發生藍白畫面

預設情況下，BSoD 的顯示是藍（0x01 或 #0000AA，Windows 8/10 則是 #2067B2）底白（0x0F 或 #FFFFFF）字。顯示的資訊包括了當前的記憶體值以及暫存器值。

BSoD 已經極少出現在 Windows NT 家族中。當在較輕微的軟體錯誤出現時，雖然程式依然可能崩潰，但由於新系統中更好的記憶體管理，類似錯誤並不會損害到整個作業系統。在這些系統中，「真正的」BSoD 只在整個系統崩潰時才會出現。

BSoD 最早出現在 Windows 1.0 中。另外，在微軟遊戲主機 XBOX 出現的畫面不是藍色，而是綠色。而在 XP/Vista/7 中，存在一種比 BSoD 更嚴重的紅白當機畫面，常見於驅動程式故障。 Windows Insider Preview 有綠白當機畫面和藍白當機畫面畫面。

在中文版本的作業系統中，Windows 3.2 與 Windows 95（不包括 OSR2）中藍白畫面內容為中文，之後版本的藍白畫面均為英文提示，直到 Windows 8 之後才重新換回中文。

* * * * *

## 相關條目

* 紅白當機
* 核心錯誤
* 綠白當機

## 參考文獻

## 外部連結

* 微軟技術支援網站 （頁面存檔備份，存於網際網路檔案館）
* 在 Windows 10 1607 以後掃描藍白畫面介面中的二維條碼會跳轉至藍白畫面錯誤疑難排解介面
* Bluescreeners Developer Team
* BlueScreen （頁面存檔備份，存於網際網路檔案館）－一個黑色幽默風格的螢幕保護程式，由微軟所推出，可以類比藍白當機畫面畫面。（對 Windows8 和 Windows10 無效果）