Dump文件主要是將內存中的內容儲存起來的物理文件,根據儲存的不同內存段,可以將dump文件分為內核模式dump(Kernel-mode dump)和用戶模式dump(User-mode dump),我們主要用到是用戶模式dump。
用戶模式dump又可以分為完全dump(Full User-Mode Dump)和迷你dump(Minidump),minidump只包含目標進程相關的內存,full dump包含了所有用戶空間的內存,同時還包括了虛擬內存,所以minidump遠遠小於full dump,
我們常用的是迷你dump。
一、任務管理器
在任務管理器中,切換到"進程"選項卡,右鍵點擊你想要創建dump文件的進程,然后選擇"創建轉儲文件"即可
如果想在程序崩潰的那一刻抓取dump文件。可以通過adplus命令來抓
ADPlus 具有兩種操作模式:
“Hang”模式用於解決進程掛起、100% CPU 使用率以及不涉及崩潰的其他問題。當您在掛起模式下使用 ADPlus 時,在運行腳本之前必須等待,直到進程停止響應(與崩潰模式不同,掛起模式不是持久性的)。
“Crash”模式用於解決 Dr. Watson 錯誤導致的崩潰問題,或者用於解決導致程序或服務意外退出的任何其他類型的錯誤。當您在崩潰模式下使用 ADPlus 時,必須在發生崩潰前啟動 ADPlus。可以通過“-notify”開關對 ADPlus 進行配置,以便通知管理員或計算機發生了崩潰。
二、ADPLUS
使用ADPlus的命令舉例
-crash:表示我捕捉的是一個Crash dump。
-p:指定要捕捉的進程ID。 -IIS表示我們捕捉IIS的所有進程。
-quiet:不彈出提示窗口
-fullonfirst:表示我希望在first chance時捕捉完整的dump信息,也就是進程的所有完整信息。
-o :后面跟着dump文件的存放路徑
-c : 指定配置文件
為Hang住的情況抓Dump:
adplus -hang -pn w3wp.exe -o C:\dumps 為所有的w3wp.exe進程創建dump到C:\dumps
adplus -hang -p 1244 為進程ID為1244的進程創建內存轉儲文件.
adplus -hang –IIS 為所有跟IIS相關的進程(比如w3wp.exe, inetinfo.exe, aspnet_wp.exe 和dllhost.exe)創建內存轉儲文件.
為Crash的情況抓Dump:
adplus -crash -pn -fullonfirst w3wp.exe 在崩潰的時候為所有的w3wp.exe進程創建內存轉儲文件
adplus -crash -p 8588 -fullonfirst -o d:\dumps 在進程ID為8588 的進程崩潰的時候為它創建內存轉儲文件
adplus -crash –IIS 為所有跟IIS相關的進程(比如w3wp.exe, inetinfo.exe, aspnet_wp.exe 和dllhost.exe)創建崩潰時的內存轉儲文件.
三、Windbg
附加(attach)已經啟動的程序,選擇好進程, 是windbg輸入命令 .dump /ma d:\w3wp.dmp
1、查看進程ID
2、attach進程
3、生成dump文件
選項(1): /m
命令行示例:.dump /m d:\w3wp.dmp
注解: 缺省選項,生成標准的minidump, 轉儲文件通常較小,便於在網絡上通過郵件或其他方式傳輸。 這種文件的信息量較少,只包含系統信息、加載的模塊(DLL)信息、 進程信息和線程信息。
選項(2): /ma
命令行示例:.dump /ma d:\w3wp.dmp
注解: 帶有盡量多選項的minidump(包括完整的內存內容、句柄、未加載的模塊,等等),文件很大,但如果條件允許(本機調試,局域網環境), 推薦使用這中dump。