抓取Dump


 

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。

 


免責聲明!

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



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