今天就跟大家聊聊有關如何用windbg調試分析dump文件解決Unity問題,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
術語、縮略語
windbg
windows平臺下,強大的用戶態和內核態調試工具。
dmp
內存映像文件,一般是系統錯誤產生的文件。
Pdb
程序數據庫文件。
Symbol
符號文件(Symbol Files)是一個數據信息文件,它包含了應用程序二進制文件(比如:EXE、DLL等)調試信息
概述
Windbg是Windows平臺下強大的工具。相比較于Visual Studio,它是一個輕量級的調試工具,所謂輕量級指的是它的安裝文件大小較小,但是其調試功能,卻比VS更為強大。它的另外一個用途是可以用來分析dump數據,還可以調試進程死鎖之類的。調試功能,類似于Visual Studio,還支持命令方式。該文檔只適用于VC++,而C#的還需要額外進行一些配置,原理大致相同。
Windbg只是一個工具,要掌握其基本的使用方法,和調試命令,在實踐中不斷完善自己的調試手段。同時可以參考一下大師們的文獻《Windows用戶態程序高效排錯》,《Windows高級調試》,《軟件調試》
下載
Windbg使用非常廣泛,網上非常多的下載版本,而且文檔也比較多,可以到CSDN或者其他網站下載,支持綠色包運行。
配置
Windbg在使用前,需要進行配置。
1.1環境變量
1、添加環境變量:_NT_SYMBOL_PATH
2、環境變量值:
C:\MyCodesSymbols;SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols
環境變量配置
3、根據環境變量值,在C盤下新建文件夾:MyCodesSymbols,MyLocalSymbols這兩個文件夾主要存放windows的符號文件,也就是系統默認的一些pdb文件,這些文件不是系統自帶的,需要配置好鏈接,第一次調試的時候windbg默認下載需要的缺失的symbol文件。
Windbg工具配置
符號配置Symbol File Path
C:\MyCodesSymbols;SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols
符號配置
源碼路徑配置Source File Path
工具不會智能定位到相應的源碼,所以要配置你的源碼工程的路徑,是工程文件(例如這種格式的文件:*.vcxproj)所在的路徑。
編譯器配置
支持VC6以上的Visual Studio編譯器,設置相關的屬性
生成程序數據庫文件
使用
工具進行使用前配置后,可以進行工作了。這里介紹綁定進程進行調試的操作步驟。
綁定進程
注意,進程要先啟動再進行綁定設置,因為Attach to Process窗口不會像任務管理器一樣實時刷新進程。選中進程名稱,點擊Ok確認。
綁定進程
調試
綁定進程后,可以在命令窗口輸入g字母命令,然后回車?;蛘哂每旖萱IF5。即可在調試中運行進程了。注意:須要pdb文件,和exe或dll放在一起,或者上文提到的把pdb文件放在C:\MyCodesSymbols目錄。因為調試信息都是根據pdb的文件時間戳進行定位歷史文件的,所以在發布版本后,最好備份一下代碼和文件。否則版本發出去了,原生源碼進行編譯了,pdb不一樣了,源碼被修改了,那么抓取到的*.dmp內存映像就不能準確地調試。
程序被windbg綁定后,F5運行,現在可以正常操作軟件了。這時候軟件有異常,命令窗口會打印相關的異常命令。
調試
輸入小寫字母k命令,即可打印堆棧。左窗口也是相應的源碼,像vs那樣調試。
調試工具欄
如局部變量數據展示窗口:Locals
命令
除了基本的可視化調試之外,windbg支持命令進行其他的內核調試,可以根據實際需要進行使用,下面簡單介紹常用的命令:
1、查看版本信息:version、vertarget。
2、查看模塊信息:lm、!dlls、!lmvi等。
3、調用棧:用k命令顯示調用棧,用.frames命令切換棧幀。
4、內存操作:讀內存用d命令,寫內存用e命令。
5、自動分析:!analyze、!owner等。
6、符號命令:.reload加載符號, .sympath設置符號路徑, !sym設置符號選項。
7、進程線程:!process顯示進程信息;.process顯示當前進程,或用.process /i切換當前進程;!peb顯示進程環境塊內容;~命令顯示線程列表,用~n s可切換當前線程,n表示線程號;.thread顯示當前線程。
分析dmp文件
Windbg是調試的利器,可以綁定進程進行調試,也可以調試進程的內存映像*.dmp文件,一般是進程崩潰后系統產生的dmp文件,或者程序try catch用代碼生成的dmp文件。分析dmp文件,也大致上以上步驟,只不過上面是綁定文件,這個是打開dmp文件而已。
擴展
綁定進程,調試dmp文件,當然除了windbg之外,還可以直接用vs編譯器,這是最好不過的事,只是vs編譯器體積實在太大了,沒有windbg小巧方便。
看完上述內容,你們對如何用windbg調試分析dump文件解決Unity問題有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。