.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
