Windbg常用命令系列---.dump(創建dump文件)


.dump (Create Dump File)

.dump 命令創建一個用戶模式或內核模式崩潰轉儲文件。

語法

.dump Options FileName 
.dump /? 

參數

Options
指定下面這些選項的一個或多個。
/o
覆蓋具有相同名字的dump文件。如果沒有使用該選項又存在一個相同名字的文件,則dump文件不會被寫入。
/f
(內核模式:) 創建一個完整內存dump。

 (用戶模式:) 創建一個完整用戶模式dump。不管怎么稱呼,最大的minidump文件實際比完整用戶模式dump文件包含更多信息。例如, .dump /mf.dump /ma 會創建比.dump /f創建更大更完整的文件。在用戶模式下,.dump /m[MiniOptions] 總是比.dump /f更可取。

/m[ MiniOptions]
創建一個小內存dump(內核模式)或者 minidump (用戶模式)。如果沒有指定 /f /m/m 是默認選項。

用戶模式下,/m 后面可以跟附加的MiniOptions 用來指定dump文件中包含的數據。如果沒有使用MiniOptions ,dump文件包含模塊、線程和調用堆棧信息,但是沒有其他附加信息。可以使用下面的任意MiniOptions 來改變dump文件的內容,它們區分大小寫。

MiniOption 作用
a 創建一個包含所有附加選項的minidump。/ma選項相當於/mfFhut —它會在minidump中添加完整的內存數據、句柄數據、已卸載模塊信息、基本內存信息和線程時間信息。
f 在minidump中包含完整內存數據。目標程序擁有的所有 可訪問的已交付的頁面(committed pages)都會包含進去。
F 在minidump中添加所有基本內存信息。這會將一個流加入到包含完整基本內存信息的minidump中,而不單是可使用的內存。這樣可以使得調試器能夠重建minidump生成時進程的完整虛擬內存布局。
h 在minidump中包含和目標進程相關的句柄信息。
u 在minidump中包含已卸載模塊信息。僅在Windows Server 2003和之后版本的Windows中可用。
t 在minidump中包含附加的線程信息。包括可以在調試minidump時使用!runaway擴展命令或.ttime (Display Thread Times)命令進行顯示的線程時間。
i 在minidump中包含次級內存(secondary memory)。次級內存是由堆棧中的指針或備份存儲(backing store)中引用到的任何內存,加上該地址周圍的一小段區域。
p 在minidump中包含進程環境塊(PEB)和線程環境塊(TEB)。這在想訪問程序的進程和線程相關的Windows系統信息時很有用。
w 將所有已交付的可讀寫的私有頁面包含進minidump。
d 在minidump中包含可執行映像中所有可讀寫的數據段。
c 加入映像中的代碼段。
r 從minidump中去掉對重建調用堆棧無用的堆棧和存儲內存部分。局部變量和其他數據類型值也被刪除。這個選項不會使得minidump變小(因為這些內存節僅僅是變成0),但是當想保護其他程序中的機密信息時有用。
R 在minidump中去掉完整的模塊路徑。僅包含模塊名。如果想保護用戶的目錄結構時該選項有用。

這些MiniOptions 只能在創建用戶模式minidump時使用。它們需要跟在 /m 修飾符后面。

/u
在dump文件名中添加日期、時間和PID。這可以確保dump文件名的唯一性。
/a
所有當前正在調試的進程創建dump。如果使用了 /a,也必須使用 /u 選項來保證每個文件有唯一的名字。
/b[ a]
創建一個 .cab 文件。如果包含該選項, FileName 會被當作CAB文件名,而不是dump文件名。會先創建一個臨時的dump文件,然后將該文件打包為CAB,然后刪除它。如果 b后面跟了 a,所有的符號和映像文件也會打包到CAB中。
/c " Comment "
指定要寫入dump文件的注釋字符串。如果 Comment 中包含空格,則必須用雙引號將它括起來。當dump文件加載時會顯示這個 Comment 字符串。
/xc Address
(僅用戶模式minidump) 在dump文件中加入上下文記錄。 Address必須指定上下文記錄的地址。
/xr Address
(僅用戶模式minidump) 在dump文件中加入一個異常記錄。 Address 必須指定該異常記錄開始的地址。
/xp Address
(僅用戶模式minidumps) 在dump文件中加入一個上下文記錄和異常記錄。 Address 必須指定一個包含上下文記錄和異常記錄指針的 EXCEPTION_POINTERS 結構的地址。
/xt ThreadID
(僅用戶模式minidumps) 指定將會作為dump文件的異常線程的系統線程的ID。
/kpmf File
(僅創建內核模式完整內存dump) 指定一個包含物理內存頁面數據的文件。
FileName
指定dump文件名。可以設置完整路徑和文件名,或者只設置文件名。如果文件名中包含空格,則需要用引號將 FileName 括起來。如果沒有指定路徑,會使用當前目錄。
-?
顯示該命令的幫助。在用戶模式和內核模式下顯示的文本是不同的。

環境

模式 用戶模式、內核模式
目標 活動目標、崩潰轉儲
平台 所有

注釋

該命令可以在各種情況下使用:

  • 進行用戶模式活動調試時,該命令創建目標程序的dump文件,但是目標程序不會被結束。
  • 內核模式活動調試時,該命令創建目標機的dump文件,但是目標機不會崩潰。
  • 調試dump文件時,該命令從舊文件創建出一個新的dump文件。這在有一個大的dump文件但是又想創建一個更小的文件時有用。

可以控制dump文件的類型:

  • 內核模式下,使用/f選項來生成完整內存轉儲。使用/m選項(或不帶選項)來生成小內存轉儲。.dump命令不能創建內核內存轉儲。
  • 用戶模式下,使用.dump /m[MiniOptions] 是最好的選擇。雖然"m" 代表着"minidump",但是使用MiniOption創建的dump文件可以很小也可以很大。通過指定合適的MiniOptions ,可以精確的控制包含的信息。例如,.dump /ma 產生包含大量信息的dumo文件。.dump /f命令產生大小適中的"標准dump"文件,並且不能進行自定義。

不能指定要轉儲的進程。所有運行中的進程都會轉儲下來。

/xc /xr/xp /xt 選項用來在dump文件中保存異常和上下文信息。這使得該dump文件可以使用 .ecxr (Display Exception Context Record)

下面的示例創建一個包含完整內存和句柄信息的用戶模式minidump:

0:000> .dump /mfh myfile.dmp 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM