Dump文件
1. Dump文件
1. Dump文件介紹
Dump文件(Dump File),也叫轉儲文件,以.DMP為文件后綴。dump文件是進程在內存中的鏡像文件,通過轉換然后存儲成以.DMP后綴的文件。dump文件根據存儲時的選項不同,會生成不同大小的文件,其中記錄信息也自然有所不同。
2. Dump文件分類
程序分兩種,內核模式程序和用戶模式程序,也即Ring0程序和Ring3程序。Dump文件是伴隨著程序而生成的,所以Dump文件也同樣分兩種。?
1. Kernel-Mode Dump Files(內核模式Dump文件),主要是驅動程序,此文不涉及。?
2. User-Mode Dump Files(用戶模式Dump文件),主要是應用程序及服務程序,此文所講。?
用戶模式Dump文件又分Full User-Mode Dumps和Minidumps。前者生成的是完整的內存快照,所以文件比較大。后者依然生成選項,生成包含不同信息的Dump文件。此文以Minidumps文件來分析調試。
3. Dump文件生成方式
用WinDbg來Attach崩潰提示窗口的process,然后輸入.dump /m C:\myapp.dmp命令,即可生成默認的miniDump文件(只包含系統信息、加載的模塊(DLL)信息、 進程信息和線程信息)。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
2. 分析Dump文件
1. 使用Visual Studio
- 選擇與生成Dump文件相同版本的VS。
- 啟動VS并打開Dump文件。
- 必須保證生成Dump文件的程序的PDB文件和源代碼相一致。
- VS2005打開Dump文件時,直接按F5調試,代碼會停在出錯的地方,通過Call Stack窗口查看。
- VS2010打開Dump文件時,?
?
需要通過Set symbol paths設置符號文件路徑,也即PDB文件路徑。然后點擊Debug with Native Only,代碼即會暫時在出錯的地方,通過Call Stack窗口查看相關信息。
2. 使用WinDbg
- 選擇相應版本的WinDbg,x86還是AMD64(也即X64,因為64桌面架構系統是AMD最新發布)。
- File->Open Crush Dump,打開指定的Dump文件。
- File->Symbol File Path,添加srv*D:\Symbols*http://msdl.microsoft.com/download/symbols
- File->Symbol File Path,添加程序的PDB文件夾路徑。這樣可以調試系統DLL,也可以調試自有程序。
- 然后在WinDbg命令行中輸入!analyze -v,等待WinDbg分析完畢。
- 通過上圖,即可以看到代碼崩潰的行數。
3. 自定義崩潰窗口
示例代碼是Win32類型的DLL,導出接口SetCustomUnhandledExceptionFilter在Solution的啟動Project的最開始調用一次即可。?
總結
- 上一篇: github 国内加速镜像
- 下一篇: Windows驱动程序的加载