核心實時傾印程式代碼參考
本節包含可能發生的常見核心實時傾印程序代碼描述。 實時傾印不會重設OS,但允許擷取記憶體資訊,以取得操作系統可以繼續的異常情況。
注意
本主題適用於程式設計人員。 如果您是系統已顯示藍色畫面且有錯誤檢查程式代碼的客戶,請參閱 針對藍色畫面錯誤進行疑難解答。
與錯誤檢查相比的核心實時傾印
透過傳統的錯誤檢查,計算機重設和使用者的工作會中斷。 核心實時傾印的目標是收集數據,以發生異常情況,但允許OS繼續作業。 相較於錯誤檢查「非致命」但高影響失敗和停止回應,這可減少停機時間。 核心實時傾印可用來將操作系統復原到已知的良好狀態。 例如,子系統的硬體重設,例如視訊/顯示器、USB3 或Wi-Fi,可讓這些系統回到已知的良好狀態,且用戶影響最小。
核心實時傾印會建立核心記憶體的一致快照集,並將它儲存至傾印檔案以供日後分析。 為了將效能的影響降到最低,記憶體複製技術可用來在短時間內建立傾印檔案。 此外,實時傾印的集合會進行節流處理,以便將用戶影響降至最低。
核心實時傾印對於某個項目花費很長的時間,但技術上沒有失敗的問題類別有效。 監視程式定時器可以在作業啟動時初始化。 如果監視程式在作業在預期時間內完成之前到期,則可以取得系統的實時傾印。 然後,您可以透過周遊呼叫堆疊和相關等候鏈結來分析傾印,以調查其未使用預期的時間範圍完成的原因。
當某個項目失敗,且程式代碼擁有者記錄失敗的原因並可以識別原因時,系統記錄良好。 使用監視程式定時器的即時傾印會嘗試攔截未預期和記錄的失敗路徑。 但與每次失敗一樣,系統記錄可能會識別其他問題,這些問題可能會提供失敗的特定根本原因。
核心實時傾印檔案內容
與一般傾印檔案類似,實時傾印檔案可能包含小型傾印(含次要數據),以及完整核心傾印,也可能包含使用者模式記憶體,類似於使用中傾印。 如需傾印檔案內容的一般資訊,請參閱 核心模式傾印檔案的品種。 有些實時傾印只會嘗試擷取小型傾印,因為它們的設計目的是擷取特定的硬體相關數據,而其他傾印則可能會嘗試擷取較大的核心實時傾印。
針對效能、檔案大小和傾印擷取的可靠性,不包含某些資訊,例如清單和檔案快取中的頁面。
實時傾印檔案通常包含記憶體頁面,例如:
- KdDebuggerBlock
- 載入的模組清單
針對每個處理器,會在核心傾印中擷取下列資訊:
- KiProcessorBlock
- 中國B
- 目前的堆疊
- 目前頁面目錄數據表
- KI_USER_SHARED_DATA
- NTOS 核心映像
- HAL 影像
核心傾印中的其他資訊可能包括:
- 線程/記憶體狀態
- 記憶體內部記錄
某些即時傾印可能包含使用者模式進程頁面。
其他網域特定數據,例如 USB 失敗的 USB 特定數據,可能會包含一些實時傾印。
部分核心實時傾印檔案
當即時傾印無法可靠地擷取所有預期的記憶體頁面時,可能會產生部分核心實時傾印檔案。 擷取部分傾印中擷取的信息會篩選並設定優先順序,方法是擷取包含在其他頁面之前產生有效傾印所需重要數據的頁面。 例如,當實時傾印包含用戶頁面時,核心頁面會優先於用戶頁面。 在某些情況下,沒有足夠的資源可用來擷取所有預定的選擇性記憶體頁面,因此傾印檔案可能會遺失記憶體。 WinDbg 調試程式仍應辨識傾印檔案,但在嘗試傾印記憶體時可能會顯示錯誤。 如果除錯程式嘗試在位址傾印記憶體時顯示錯誤,您可以使用 !pte 擴充功能來檢查位址的 PTE 是否有效。 這有助於判斷記憶體位址是否真的無效,或頁面是否有效,但無法直接在傾印檔案中使用。
分析即時傾印檔案
發生實時傾印時,可以使用用於其他記憶體轉儲檔案的相同技術來分析傾印檔案。 若要瞭解失敗期間記憶體的內容,需要處理器記憶體緩存器和元件程式設計的知識。
如需詳細資訊,請參閱
使用 WinDbg 顯示即時傾印停止程式代碼資訊
如果本主題中未顯示特定的即時傾印程式碼,請使用 Windows 調試程式 (WinDbg) 中的 !analyze 擴充功能搭配下列語法(在核心模式中),以即時傾印程式代碼取代 <code>
:
!analyze -show <code>
輸入此命令會導致 WinDbg 顯示指定即時傾印程式代碼的相關信息。 如果您的預設數位基底 (radix) 不是 16,則前置 <code>
詞為 0x。
將即時傾印程式代碼參數提供給 !analyze 命令,以顯示任何可用的參數資訊。 例如,若要顯示錯誤檢查0x144 BUGCODE_USB3_DRIVER的相關信息,參數 1 值為 0x3003,請使用 !analyze -show 0x144 0x3003
,如下所示。
0: kd> !analyze -show 0x144 0x3003
BUGCODE_USB3_DRIVER (144)
This bugcheck usually happens when the USB3 core stack detects an invalid
operation being performed by a USB client. This bugcheck may also occur
due to hardware failure on a USB Boot Device.
Arguments:
Arg1: 0000000000003003, USB3_WER_BUGCODE_USBHUB3_DEVICE_ENUMERATION_FAILURE
A USB device failed enumeration.
Arg2: 0000000000000000, USBHUB3_LIVEDUMP_CONTEXT
Arg3: 0000000000000000, 0
Arg4: 0000000000000000, 0
若要下載 WinDbg,請參閱 Windows 偵錯工具。 若要深入瞭解 WinDbg 開發工具,請參閱 開始使用 Windows 偵錯。
實時傾印檔案位置
根據預設,實時傾印會儲存在 『C:\WINDOWS\LiveKernelReports』 目錄中。
完整傾印: %systemroot%\LiveKernelReports\*.dmp
Minidumps: %systemroot%\LiveKernelReports\<ComponentName>\*.dmp
目錄結構可用來儲存不同元件的實時傾印。
NDIS
PDCRevocation
PoW32kWatchdog
USBHUB3
WATCHDOG
即時傾印登錄機碼
如需系統產生即時核心報告的組態選項詳細資訊,請參閱 WER 設定。
使用 PowerShell 手動觸發實時傾印
開啟並系統管理員 PowerShell 提示字元。
使用 Get-StorageSubSystem PowerShell 命令取得 StorageSubsystem 易記名稱。
C:\> Get-StorageSubSystem
FriendlyName HealthStatus OperationalStatus
------------ ------------ -----------------
Windows Storage on 10-2411-PC Healthy OK
- 使用 Get-StorageDiagnosticInfo 為上述子系統產生實時傾印(以及其他診斷記錄)。 如需詳細資訊,請參閱 Get-StorageDiagnosticInfo。
C:\> Get-StorageDiagnosticInfo -StorageSubSystemFriendlyName "Windows Storage on 10-2411-PC" -IncludeLiveDump -DestinationPath C:\destinationfolder
- 輸出會指出正在產生要求的資訊。
Gathering storage subsystem diagnostic information
Running
[oooooooooooo ]
- 傾印將會位於 內
[DestinationPath]\localhost
。
C:\> dir C:\destinationfolder\localhost\*.dmp
Directory: C:\destinationfolder\localhost
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 5/5/2016 1:08 PM 867135488 LiveDump.dmp
核心實時傾印程序代碼
下表提供核心實時傾印程式碼的連結。
這些停止代碼可用於即時傾印或錯誤檢查裝置。
代碼 | 名稱 |
---|---|
0x00000124 | WHEA_UNCORRECTABLE_ERROR |
0x00000144 | BUGCODE_USB3_DRIVER |
0x00000164 | WIN32K_CRITICAL_FAILURE |