快訊
2026-07-30
電腦疑難雜症

KERNEL_MODE_EXCEPTION_NOT_HANDLED(0x8E)藍屏排錯:參數 1 定路線、參數 2 鎖模組

約 20 分鐘閱讀

⚡ 站長快讀:核心重點

  • 文章屬性:疑難排除(A5 底層除錯)
  • 適用系統:Windows 10 / Windows 11(停止碼定義不分版本,官方文件通用)
  • 難易度 / 耗時:⭐⭐⭐ / 基本排查約 30 分鐘,傾印分析約 40 分鐘
  • 核心結論:0x8E 不是病名,是「有例外沒人接手」的通報。同一個 0x8E,參數 1 的例外碼不同就是完全不同的兩件事——照著停止碼一路換記憶體,方向從一開始就錯了。
  • 適用對象:藍屏畫面出現 KERNEL_MODE_EXCEPTION_NOT_HANDLED 或停止碼 0x0000008E,想知道到底該查驅動、記憶體還是磁碟空間的人。

📌 快速答案

一句話答案:遇到 KERNEL_MODE_EXCEPTION_NOT_HANDLED(0x8E),先抄下畫面上的模組名稱,再讀參數 1 的例外碼決定該查驅動、查資料對齊還是查除錯開關。

廣告

🧰 開始前的準備

  • 適用系統:Windows 10 / Windows 11 全版本(Microsoft 官方 Bug Check 0x8E 文件未限定版本)
  • 權限需求:系統管理員(讀取傾印檔、啟用 Driver Verifier、進入安全模式都需要)
  • 需要工具:WinDbg(Debugging Tools for Windows)、事件檢視器(內建)、系統製造商提供的硬體診斷工具
  • 預計耗時:基本排查約 30 分鐘;要開 WinDbg 讀傾印再加 40 分鐘

⚠️ 執行前先做三件事:①確認手上有可開機的救援 USB;②重要資料先備份到外接裝置或雲端;③確認電源穩定(桌機建議接 UPS,筆電請接電源)。本文後半段的 Driver Verifier 與安全模式移除驅動都可能讓系統暫時進不了桌面。


🔍 症狀描述與錯誤訊息

0x8E 的典型現場是這樣:電腦在你完全沒動它的時候突然黑屏或藍屏、跑完進度條自動重開,而畫面底下留下一行停止碼。Windows 11 版本 24H2 之後,這個畫面的底色已經從藍色改成黑色,但性質完全一樣——Microsoft 官方支援文件把它並列稱為 stop code error、bug check、kernel error、Blue Screen error 或 Black Screen error。

你在畫面上會看到的字樣是下面這幾種之一:

KERNEL_MODE_EXCEPTION_NOT_HANDLED

STOP: 0x0000008E

你的裝置發生問題,需要重新啟動。(停止碼:KERNEL_MODE_EXCEPTION_NOT_HANDLED)

有時候停止碼下面還會多一行模組名稱。Microsoft 官方支援文件明講,畫面會顯示「當問題發生時正在執行的程式碼的模組名稱」——如果有這一行,它就是整篇文章裡最值錢的線索,先抄下來再重開機。

比較容易被忽略的兩個場景,官方 0x8E 文件特別點出來:

  • 剛裝完 Windows 就跳:這個錯誤「可能在 Windows 安裝期間第一次重新啟動之後,或安裝完成之後發生」,而官方列的可能原因是安裝用的磁碟空間不足系統 BIOS 不相容
  • 停止碼旁邊掛著 Win32k.sys:官方文件寫得很直接——如果問題與 Win32k.sys 有關,錯誤來源可能是第三方遠端控制程式

🔎 問題根因

先給結論:0x8E 本身不是病名,是驗屍報告的第一行。 它告訴你「有一段跑在核心模式的程式碼丟出了例外,而沒有任何錯誤處理常式接住它」,於是核心只能直接停機,免得損壞繼續擴散。真正要問的是:丟出來的是哪一種例外?

Microsoft 官方對 0x8E 的定義只有一句話:這個 bug check 的值是 0x0000008E,表示「核心模式應用程式產生了錯誤處理常式未攔截的例外」。官方接著補了一句常被誤讀的話——「KERNEL_MODE_EXCEPTION_NOT_HANDLED 是一個非常常見的 bug check」(a very common bug check),並且要求「要解讀它,你必須先辨識出是哪一個例外被產生」。

廣告

這裡值得跟網路上的流傳說法對一下:很多中文教學會說 0x8E「是舊版 Windows 才有的碼」。截至本文查證日,Microsoft 官方文件並未把 0x8E 標記為已退役、已停用或罕見,反而用了「非常常見」的措辭。所以請把它當成一個仍然有效的通用型當機碼來處理,不要因為它看起來「老」就跳過。

參數 1 的例外碼才是分流器

0x8E 的四個參數,官方定義如下:

參數官方描述實務用途
1未被處理的例外碼決定整個排查路線
2例外發生的位址用來反查是哪個驅動或函式
3trap frame餵給除錯器換 context 做堆疊回溯
4Reserved(保留)無資訊,不必看

官方列了三個常見的例外碼,而這三個各自指向完全不同的方向:

  • 0xC0000005 — STATUS_ACCESS_VIOLATION:發生記憶體存取違規。這是最常見、也最可能真的是驅動程式出包的那一條路。
  • 0x80000002 — STATUS_DATATYPE_MISALIGNMENT:遇到未對齊的資料參考。官方對這一種特別交代:「如果發生例外碼 0x80000002,trap frame 會提供額外資訊」。
  • 0x80000003 — STATUS_BREAKPOINT:在沒有連接核心除錯器的情況下遇到中斷點或 ASSERT。官方講得很白:這代表硬編碼的中斷點或判定式被觸發,但電腦是以 /NODEBUG 參數開機的;這個狀況應該極少發生,如果重複發生,要確認核心除錯器已連上、且電腦以 /DEBUG 開機。

換句話說,如果你的參數 1 是 0x80000003,那你八成不是「一般使用者遇到藍屏」,而是跑到了某個開發版或帶除錯判定式的驅動——這時候一路換記憶體、跑 sfc 完全是白費工。完整的例外碼清單,官方指向 WDK inc 目錄下的 Ntstatus.h,或線上的 NTSTATUS values 對照表


🔬 底層機制:這個錯誤訊號從哪裡來?

要理解 0x8E,得先理解核心模式裡「例外」的生命週期。

使用者模式的程式丟出未處理的例外,結果是那支程式當掉,系統照常運作——因為每支行程有自己的位址空間,炸掉一個不會拖垮別人。核心模式沒有這種奢侈:驅動程式、檔案系統、核心本體全部共用同一個位址空間,任何一段程式碼踩壞了不該踩的記憶體,壞掉的東西就是全系統共用的東西。

廣告

所以核心的例外派送流程是這樣走的:CPU 偵測到異常狀況(存取了無效位址、資料未對齊、遇到中斷點指令)→ 觸發硬體陷阱,由 CPU 把當下所有暫存器狀態存成一份 trap frame → 核心的例外派送器沿著呼叫堆疊往回找,看有沒有哪一層登記了能處理這個例外的處理常式 → 如果一路找到底都沒人接手,核心就沒有安全的路可走,只能呼叫 KeBugCheckEx 停機,並把「是什麼例外、發生在哪、trap frame 在哪」三樣資訊當成參數留在藍屏上。

這就是 0x8E 參數 3 的來歷:它不是給人看的數字,是一個記憶體位址,指向 CPU 出事那一刻的完整暫存器快照。

官方對 0x8E 的除錯難度講了一句很誠實的話:「如果你打算除錯這個問題,你可能會發現很難取得堆疊追蹤」——原因就在於例外派送過程中原始的呼叫堆疊已經被繞過,你在傾印檔裡直接下 k 看到的往往是派送器自己的堆疊,不是兇手的堆疊。官方接著給了替代路線:「參數 2(例外位址)應該能指出造成這個問題的驅動或函式。」

而參數 3 那份 trap frame,就是把暫存器 context 切回出事現場的鑰匙。WinDbg 的 .trap 命令官方說明寫得很清楚:它會顯示指定 trap frame 的重要暫存器,並且指示核心除錯器改用該 context record 作為暫存器 context;命令執行後,除錯器就能存取這個執行緒最重要的暫存器與堆疊追蹤。這個暫存器 context 會一直維持,直到你讓目標繼續執行、或改用 .thread.cxr 等其他暫存器 context 命令(清單含 .trap 本身)。

📌 誠實標註:官方 .trap 文件明列「此擴充常用於除錯 bug check 0xA 與 0x7F」,並未點名 0x8E。「0x8E 的參數 3 可以直接餵給 .trap」是依據兩份官方文件對照推導的結論——0x8E 參數表明訂參數 3 即 trap frame,而 .trap 的參數定義就是「目標系統上 trap frame 的十六進位位址」。站長我認為這個推導成立,但請把它當作推論而非官方明文,實際跑的時候若 .trap 沒吐出合理的暫存器內容,就退回官方明寫的參數 2 路線。


🧭 與相近錯誤碼比較:0x8E 到底跟 0x1E 差在哪?

這是本站最常收到的追問。0x1E 的名字是 KMODE_EXCEPTION_NOT_HANDLED,0x8E 是 KERNEL_MODE_EXCEPTION_NOT_HANDLED,兩者官方定義幾乎同一句話——都是「核心模式程式產生了錯誤處理常式沒接住的例外」。既然定義一樣,差別在哪?

差別在參數 3 與參數 4 的語意,而這直接決定你在 WinDbg 裡走哪條路。

廣告
比較項0x8E KERNEL_MODE_EXCEPTION_NOT_HANDLED0x1E KMODE_EXCEPTION_NOT_HANDLED
參數 3trap frame例外記錄的例外資訊參數
參數 4Reserved(保留,無資訊)例外資訊參數(存取違規時=驅動嘗試存取的位址)
官方建議路線參數 2 反查模組;參數 3 換 context.exr 讀例外記錄 →.cxr 讀 context record
0x8E 與 0x1E 參數語意與除錯路線對照
0x8E 與 0x1E 參數語意與官方除錯路線對照(來源:Microsoft Learn Bug Check 0x8E / 0x1E 官方文件,2026-07-30 查證)

讀法:0x8E 把「現場快照」直接放在參數 3,0x1E 則是把「例外的細節參數」放在參數 3、4。 所以 0x1E 官方文件為了取得堆疊追蹤,得教你一整套繞路程序:先用 kbNT!PspUnhandledExceptionInSystemThread,取它的第一個參數(一個 EXCEPTION_POINTERS 結構指標),用 dd 倒出來,第一個值餵 .exr、第二個值餵 .cxr,再跑 kb。官方甚至補了一段註記:存取違規類的當機有時候找不到 PspUnhandledExceptionInSystemThread,那就改找 ntoskrnl!KiDispatchException,它的第三個參數就是 trap frame 位址,拿去餵 .trap

看到這裡就懂了:0x1E 要繞好幾步才拿到的那個 trap frame 位址,0x8E 直接寫在參數 3 給你。

⚠️ 一處官方文件本身的措辭衝突,必須揭露

查證過程中發現一個必須誠實交代的分歧:Microsoft 官方 0x1E 頁面的參數表裡,第 3 列與第 4 列的描述字面完全相同,都寫成「例外記錄的例外資訊參數 0」。但同一頁的 Cause 段落在講 0xC0000005 時明寫「bug check 的參數 4 是驅動嘗試存取的位址」,而該頁的 x86 範例輸出也顯示例外記錄有 Parameter[0]Parameter[1] 兩個不同的值。

判讀:官方參數表第 4 列應為「例外資訊參數 1」,該處字面重複研判為文件排版重複。 本文採信同頁 Cause 段與範例輸出的說法。之所以特別寫出來,是因為若照官方表格字面理解,你會以為 0x1E 的參數 3 和 4 是同一個東西而忽略參數 4——那正好會漏掉存取違規案例裡最關鍵的「驅動想存取哪個位址」。

0x8E 官方獨有的三個排查項

還有一組差異藏在 Resolution 段落。0x8E 官方文件列了三項 0x1E 文件沒有的處置,遇到 0x8E 值得多試:

  1. 確認磁碟空間足夠——0x1E 文件完全沒提這件事。呼應前面提到的「Windows 安裝後首次重開機才跳」場景。
  2. 嘗試更換顯示卡(Try changing video adapters)。
  3. 關閉 BIOS 的記憶體選項,例如 caching 或 shadowing

反過來,0x1E 文件獨有的是那套完整的堆疊追蹤取得程序與 x86 範例輸出。兩份文件互補,遇到 0x8E 建議兩篇一起讀。 本站對 0x1E 的完整拆解在這裡:電腦跳 KMODE_EXCEPTION_NOT_HANDLED(0x1E)藍屏?多半是驅動出包,教你揪出真兇


🛠️ 解決方案

⚠️ ⭐⭐⭐ 高風險操作警語:方法二的安全模式移除驅動與方法三的 Driver Verifier 都可能讓系統暫時無法正常開機。執行前務必:①完成重要資料備份;②建立系統還原點(設定 →系統 →系統保護 →建立);③確認手上有可開機的 Windows 救援 USB;④筆電請接上電源。

停止條件清單(符合任一,請不要繼續往下做):

– 不確定自己的 Windows 版本或機型

– 尚未完成資料備份

– 已啟用 BitLocker 但手上沒有還原金鑰

– 公司或學校管控的設備、且未取得 IT 授權

– 沒有可開機的救援 USB

– 指令輸出與本文描述不符

方法一:先做零風險的四件事(成功率最高、門檻最低)

先給結論:這四件事門檻最低、風險為零,先做完再決定要不要動傾印檔或 BIOS。

  1. 抄下停止碼旁邊的模組名稱。如果藍屏上有列出 .sys 檔名,直接拿去搜尋該裝置廠商的驅動下載頁,依 Microsoft 官方建議「停用該驅動,或向製造商確認驅動更新」。
  2. 清出磁碟空間。0x8E 官方文件把磁碟空間不足列為明確可能原因;Microsoft 官方支援文件則給了具體數字:實際需求依系統設定而異,但保留 10% 到 15% 的可用空間是好做法。優先刪不必要的暫存檔、網際網路快取檔、應用程式備份檔,以及磁碟掃描產生的 .chk 碎片檔——這幾類正是官方點名的清理對象。
  3. 檢查事件檢視器的系統日誌。官方明講要「檢查事件檢視器中的系統日誌,尋找可能有助於辨識造成 bug check 0x8E 的裝置或驅動的其他錯誤訊息」。開啟方式:按 Win+X →事件檢視器 →Windows 日誌 →系統,把時間對到當機那一刻前後五分鐘。
  4. 跑硬體診斷,尤其記憶體掃描。官方要求執行「系統製造商提供的硬體診斷,特別是記憶體掃描器」。順手也把裝置管理員打開看有沒有驚嘆號——這是官方支援文件列的基本排查步驟之一,對應的錯誤碼判讀可參考本站的裝置管理員錯誤碼完整解析

另外兩項官方列出但需要動硬體或 BIOS 的,放在這裡供評估:向硬體廠商確認是否有 BIOS 更新關閉 BIOS 的記憶體 caching 或 shadowing 選項。BIOS 更新有變磚風險,請務必照主機板廠商的官方步驟做,並確認更新期間電源不會中斷。

方法二:用 WinDbg 讀傾印,把兇手模組叫出來(進階解法)

先給結論:方法一沒解決,就別再猜了,讀傾印是唯一能指名道姓的路。 完整的 WinDbg 安裝與傾印檔位置設定,本站另有專篇:WinDbg 藍畫面 minidump 分析教學。這裡只講 0x8E 專屬的三步。

第一步:!analyze -v

官方對 0x8E 的第一個建議就是它:「!analyze 除錯擴充會顯示關於這個 bug check 的資訊,對判定根本原因會有幫助。」

kd> !analyze -v

看兩個欄位:Arguments 的第一個值就是參數 1 的例外碼,先用它分流(0xC0000005 走驅動線、0x80000002 走對齊線、0x80000003 檢查是不是裝了開發版驅動);MODULE_NAMEIMAGE_NAME 則是除錯器對兇手的初步指認。

第二步:用參數 2 反查模組

這是官方明寫的路線——參數 2 是例外發生的位址,把它交給 ln(list nearest symbols)就能問出那個位址落在哪個模組的哪個函式裡:

kd> ln <參數2的位址>

第三步:用參數 3 的 trap frame 換 context 做回溯

kd> .trap <參數3的位址>
kd> kb

.trap 會把暫存器 context 切到出事現場,接著的 kb 才會吐出真正的呼叫堆疊。堆疊裡由上往下第一個nt! 開頭的模組,通常就是要處理的對象。如前面誠實標註過的,這一步是依官方兩份文件推導的路線;若 .trap 吐出的內容不合理,退回第二步的參數 2 反查即可。

方法三:Driver Verifier 主動抓出違規驅動(最後手段)

先給結論:當你已經懷疑某幾支驅動、但傾印檔每次都指向 ntoskrnl 這種無辜的核心模組時,才用 Driver Verifier 逼兇手現形。

Microsoft 官方對這個工具的警告放在文件最上方,原文照登:「執行 Driver Verifier 可能造成電腦當機」、「只在你用於測試與除錯的電腦上執行 Driver Verifier」、「你必須是該電腦上 Administrators 群組的成員」。它的原理就是刻意讓違規驅動立刻當機——官方明說「Driver Verifier 偵測到的所有違規都會造成 bug check」,而且通常是 Bug Check 0xC4(DRIVER_VERIFIER_DETECTED_VIOLATION)。唯一例外:官方在指令說明中標注 (***) 的少數規則類別(例如 driver isolation checks)預設為 logging mode,要加 /onecheck 才會在違規當下當機。所以請預期會再藍屏幾次,這是設計如此,不是你操作錯。

工具本身不用下載,官方說明大多數 Windows 版本都內建在 %WinDir%\system32\Verifier.exe

建議做法(只驗可疑的那幾支,不要全選):以系統管理員身分開啟命令提示字元,輸入 verifier 開啟 Driver Verifier Manager →選「建立標準設定」→在選擇驗證對象時選 「從清單選取驅動程式名稱」。官方對這個選項的說明是:大多數情況你會想指定要測試哪些驅動。相對地,「自動選取這台電腦上安裝的所有驅動程式」雖然覆蓋率最高,但官方在該選項的建議用途說明中指出,它可能耗盡 Special Pool 與部分資源追蹤可用的資源,也會對系統效能造成不良影響

只要驗單一支驅動時,命令列一行就夠:

verifier /standard /driver 可疑驅動檔名.sys

設定完成後重新啟動,然後照平常的方式操作電腦。再次當機時,傾印檔裡下 !analyze -v,官方另外提供 !verifier 擴充可以倒出 Driver Verifier 統計資料。

🛑 關掉它比打開它更重要:抓到兇手(或確認抓不到)之後一定要關閉,否則系統會長期處於「驅動一違規就立刻當機」的狀態。關閉方式見下方回退步驟。


✅ 驗證修復結果

修好了不等於好了。用下面四項確認,而不是「這兩天沒當機」:

  1. 同一個操作情境重跑三次以上。0x8E 常常綁定特定動作(接上某個 USB 裝置、開某個吃顯示卡的程式、休眠喚醒)。把當初觸發當機的那個動作重複做,比乾等更有效。
  2. 確認 Driver Verifier 已關閉。以系統管理員身分執行 verifier /query (官方定義:顯示 Driver Verifier 目前活動摘要),或 verifier /querysettings (官方定義:顯示下次開機後將啟用的選項與將被驗證的驅動,不含以 /volatile 加入的項目);前者應顯示已無驗證活動,後者應顯示下次開機後無驗證項目。
  3. 回頭看事件檢視器。系統日誌裡不該再出現新的 BugCheck 事件;修復日之後若還有,代表換了個症狀而不是解決了。
  4. 確認 %SystemRoot%\Minidump 沒有新的傾印檔產生。有新檔=還在當,只是你剛好沒看到藍屏。

🔙 萬一翻車:回退步驟

情境 A:開了 Driver Verifier 之後進不了桌面(最常見)

  1. 連續兩次在開機過程中強制關機,第三次開機 Windows 會自動進入修復環境;或用救援 USB 開機後選「疑難排解 →進階選項 →啟動設定」。
  2. 選「安全模式」或「安全模式(含命令提示字元)」進入系統。
  3. 以系統管理員身分執行下面這行,把 Driver Verifier 的設定全部清掉:
verifier /reset
  1. 重新啟動電腦(官方流程把重開機列為 verifier /reset 的下一步;官方對該指令的說明是「清除所有 Driver Verifier 設定,下次開機後不會驗證任何驅動程式」)。
  • GUI 等效做法:開啟 Driver Verifier Manager →選「刪除現有設定」→完成 →重開機。

情境 B:停用或移除驅動之後系統開不起來

Microsoft 官方 0x8E 文件對這個情境有明確指引:若錯誤在開機序列期間發生、且系統分割區為 NTFS 檔案系統,你或許能用安全模式把故障的驅動改名或刪除;而如果該驅動在安全模式下也屬於系統啟動程序的一部分,就必須用 Recovery Console(復原環境命令提示字元)開機才能存取該檔案

實務上的安全順序是:先用系統還原點回到動手之前的狀態(修復環境 →疑難排解 →進階選項 →系統還原),還原成功再重新規劃。改名比刪除安全——保留原檔就永遠退得回來。

情境 C:改了 BIOS 設定之後開不了機

進 BIOS 選「Load Optimized Defaults / Load Setup Defaults」還原原廠預設值後存檔重開。請注意:各機型、各 BIOS 版本的原廠預設值並不相同,所以動手前請先把要改的那幾項的原值抄下來或拍照,回退時以「你抄下來的原值」為準,不要照抄任何文章寫死的數值(包含本文)。


💡 總結:預防再次發生

站長我處理這類通用型停止碼,養成的第一個習慣是:看到「例外沒被接住」這一族的碼(0x8E、0x1E、0x7E),先看例外碼,不要先看停止碼。 停止碼只告訴你「哪一層放棄了」,例外碼才告訴你「發生了什麼事」。同一個 0x8E,參數 1 是 0xC0000005 跟是 0x80000003,要處理的根本是兩件不同的事——前者去追驅動,後者去追「這台機器上為什麼有帶除錯判定式的驅動」。

第二個習慣是:參數 4 寫 Reserved 就真的別看它。 0x8E 的參數 4 官方明訂為保留欄位、沒有資訊,但它在藍屏上照樣會印出一串數字,很多人會拿那串數字去搜尋,然後被完全無關的結果帶偏。官方參數表就是用來省下這種冤枉路的。

第三,預防面真正有效的是三件不起眼的事:

  • 磁碟保留 10%~15% 可用空間,別把系統碟塞到見底。這是 Microsoft 官方支援文件給的具體建議,而 0x8E 官方文件也把磁碟空間不足列為明確可能原因。
  • 驅動只從裝置廠商官方頁面更新,不用第三方「驅動一鍵更新」工具。0x8E 的官方成因清單裡,「故障的裝置驅動或系統服務」就排在硬體不相容旁邊。
  • 新硬體上機前先確認相容性。官方成因第一項就是硬體不相容:「確認任何新安裝的硬體與已安裝的 Windows 版本相容。」

最後補一句誠信說明:本文為深度資料查證型(E3)文章,全篇論述以 Microsoft Learn 官方 Bug Check 文件與官方支援文件為據,不含第一手實測數據、不含具體機型或 build 的實測結果;文中所有推導(尤其參數 3 直接餵 .trap 那一段)都已標明為推論。若你手上有 0x8E 的傾印檔願意提供,歡迎留言,站長會把實際判讀過程補進這篇。


❓ 常見問題

Q:0x8E 藍屏到底代表什麼意思?

代表一段跑在核心模式的程式碼丟出了例外,而沒有任何錯誤處理常式接住它,於是核心只能停機。它不指向特定的硬體或軟體,要靠藍屏上的參數 1(例外碼)才能判斷方向。

Q:0x8E 是不是跟 0x1E 一樣的問題?

定義幾乎相同,但參數語意不同:0x8E 的參數 3 是 trap frame、參數 4 保留;0x1E 的參數 3、4 是例外記錄的資訊參數(存取違規時參數 4 是驅動嘗試存取的位址)。因此 WinDbg 的判讀路線不一樣。另外 0x8E 官方文件獨有三項處置——確認磁碟空間、更換顯示卡、關閉 BIOS 記憶體 caching/shadowing。

Q:舊驅動程式是 0x8E 的主因嗎?

官方沒有給任何比例數字,所以不能說「主因」。官方列的可能原因是硬體不相容故障的裝置驅動或系統服務兩大類,並補充 BIOS 不相容、記憶體衝突、IRQ 衝突也會產生此錯誤。實務上驅動確實是最常見的入手方向(因為藍屏往往會直接印出模組名稱),但請以你機器上的參數 1 與傾印檔為準,不要預設答案。

Q:要怎麼用 WinDbg 找出兇手模組?

三步:①!analyze -vArguments 第一個值決定路線、看 MODULE_NAME;②ln <參數2> 反查例外位址落在哪個模組(這是官方明寫的路線);③.trap <參數3> 換 context 後跑 kb 看真正的呼叫堆疊。找堆疊裡第一個非 nt! 開頭的模組。

Q:修完之後又復發怎麼辦?

先確認參數 1 的例外碼跟上次是不是同一個。同一個例外碼=同一條路沒走完(常見是換了驅動版本但問題在硬體或 BIOS);換了例外碼=通常是原本的兇手被你換掉、露出下一個問題。這時候值得改用 Driver Verifier 主動掃,並回頭跑一次系統製造商的記憶體診斷——官方在成因不明時的建議順序就是先驗硬體相容性、再驗驅動。

Q:Driver Verifier 開了之後一直當機,是我做錯了嗎?

不是。官方明講「Driver Verifier 偵測到的所有違規都會造成 bug check」,而且通常是 0xC4;讓違規驅動立刻當機就是它的設計目的。查完務必用 verifier /reset 加重開機關閉它,別長期開著。


🔗 延伸閱讀


📎 參考資料來源

📖 第一級|廠商官方:

⚠️ 本文核心事實以第一級為準,第二級為補充。本篇全數主張來自第一級官方文件,無第二級來源。

📅 本文查證戳記:2026-07-30 依據 Microsoft Learn 官方 Bug Check 文件撰寫,適用 Windows 10 / Windows 11。

若你在後續版本遇到步驟失效,歡迎在留言區回報,站長會更新文章。

廣告