---**於,本人學習windbg幫助文件時候,邊看邊翻譯。希望對討厭e文的朋友帶來些方便。 我將會盡可能的持續翻譯。
翻譯並不是從windbg幫助文件開始處翻譯,翻譯是從幫助文件中對dump檔案的介紹開始的地方進行翻譯
當核心發生錯誤,microsoft windows 會預設顯示藍屏並顯示出bug的檢查資訊。但是,這裡有幾種可替換的行為可供選擇:
ø聯接並進行核心除錯
ø寫入乙個記憶體崩潰轉存檔案
ø系統自動啟動
ø寫乙個記憶體崩潰轉存檔案後,並且系統自動重啟
下面部分將介紹如何
建立和分析核心模式的記憶體轉存檔案。有三種不同的崩潰轉存檔案,但是需要知道沒有任何轉存檔案能比直接進行系統除錯有用。
1.1
核心轉存檔案的種類
有三種模式的核心崩潰轉存檔案:a, 全記憶體轉存檔案
;b,核心記憶體轉存檔案; c,區域性記憶體轉存檔案。
這些檔案之間的不同點在於檔案大小,全記憶體轉存檔案是最大的,它包含最多的資訊;核心記憶體轉存檔案稍微小一些,最小的是
區域性記憶體轉存檔案僅64kb。
大一些的檔案的優勢在於,它包含了更多的資訊,對你找出崩潰的原因更有幫助。
小的記憶體轉存檔案的優勢在於建立更快。更快的速度建立檔案是很有意思的,如果你正在執行乙個伺服器,你希望伺服器能在崩潰後盡快的啟動,但是重新啟動必須是在記憶體轉存檔案建立
完畢後。
在全記憶體轉存或核心記憶體轉存檔案被建立後,我們可以用大的記憶體轉存檔案去建立小的記憶體轉存檔案,具體細節參考
.dump命令。
注意:很多資訊都可以從核心轉存檔案裡獲取。但是沒有核心轉存檔案能提供直接進行核心除錯如此多的資訊。
1.1.1全記憶體轉存檔案
乙個完整的記憶體轉存檔案是最大的核心除錯模式的轉存檔案。這種檔案包含所有出錯時候的物理記憶體資訊。
轉存檔案需要至少和你記憶體大小等同的磁碟空間在你的啟動分割槽中;它能存下你整個ram加1m大小的資料。
全記憶體轉存檔案預設存放在
%systemroot%\memory.dmp 。
如果第二次發生錯誤,新的全記憶體轉存檔案將會被建立並覆蓋以前的檔案。
1.1.2核心記憶體轉存檔案
核心記憶體轉存檔案包含在崩潰時候所有核心使用的記憶體的資訊
。這種檔案明顯小於全記憶體轉存檔案。通常,這種檔案的大小是記憶體的三分之一大小。當然,具體的大小是有很大差異的,這個取決於你的具體環境。
這種檔案不會包含未分配的記憶體資訊,或者任何的分配給使用者模式程式的記憶體資訊。它只包含分配給windows核心和硬體抽象層的資料,同時也包含分配給核心模式的驅動程式和其它核心模式的程式的記憶體資訊。
在大多數使用情況下,這種記憶體轉存檔案是最有用的。它明顯小於全記憶體轉存檔案,同時它不包含與崩潰無關的記憶體的資訊。
因為這種dump檔案不包含使用者模式的可執行檔案的記憶體映象崩潰時刻的資訊,如果這些資訊很重要,你需要設定可執行檔案的路徑資訊。
1.1.3區域性記憶體轉存檔案
區域性記憶體轉存檔案明顯的小於另外兩種檔案,它只有64kb大小,它只需要64kb的磁碟空間來存放。
這種轉存檔案包含如下資訊:
øbug檢查資訊和引數資訊,也有其它關於藍屏資訊的資料
ø處理器上下文資訊(prcb)針對發生崩潰的處理器
ø程序資訊和核心上下文處理程序的崩潰資訊
ø執行緒資訊和核心執行緒的崩潰資訊
ø核心崩潰執行緒的呼叫堆疊資訊,如果這些大於16kb,只有最開始部分的16kb資訊會被包括。
ø被載入的驅動程式列表
在windows xp或更新版本的windows上,如下的項也被包括:
ø載入和沒有被載入的所有模組的列表資訊
ø除錯資料塊,它包含所有的關於系統的基本除錯資訊
ø額外還有一些windows標識的記憶體頁,這些用於除錯是非常有用的,這些包含有崩潰發生時候暫存器所指向的資料頁,和組建失敗時候請求的具體資料。
ø(intel itanium 處理器)內部儲存資訊
ø(windows server 2003 和更新版本) windows的sku資訊,如
』professional』, 』server』.
這些dump檔案在空間很有限的情況下是非常有用的。但是因為資訊的量很有限,錯誤可能不是由正在執行的程序引起的,有可能並不能通過分析檔案找到錯誤。
因為這些dump檔案沒有包含可執行檔案在崩潰時候的記憶體情況,如果這些執行檔案非常重要,你就需要去設定好執行檔案路徑。
如果第二次bug再被檢測到乙個小的dump檔案會被建立,以前的dump檔案會被儲存。每個檔案會被給與不同的名字,名字中包含有當時的日期。比如mini022900-01.dmp 表示檔案是在2023年,二月,29號的時候建立的。所有的小的dump檔案都被儲存在
%systemroot%\minidump.
dump檔案 dump除錯案例1 未知跳轉
背景 自己手裡有乙個用duilib開發的工具在某乙個使用者那邊高頻崩潰。只要一啟動就崩潰,一天崩潰幾十次,很奇怪。從使用者那邊抓取dump檔案回來,調出windbg進行除錯查詢原因。過程 1.準備好pdb及原始碼檔案,windbg載入dump起來。命令列輸入.ecxr,然後切換看堆疊如下 報錯的 在...
crash工具debug核心dump檔案
所有資訊僅對arm晶元有效。32位 crash m phys base 0x80000000 vmlinux sysdump.core 0x80000000是指ddr起始地實體地址 vmlinux是帶符號資訊的vmlinux檔案 sysdump.core是dump機制拉出來的核心mem映像 64位 ...
抓取dump的標頭檔案
檔名 dumpmodule.h 使用說明 此檔案是乙個抓取程式出現異常時dump的標頭檔案,使用時只需要包含就可以了,如果程式出現異常就會生成乙個dump檔案,在可執行檔案的相同目錄。if defined dumpmodule h fbffba7d 971e 48e0 a589 6fd14e8965...