1、WinDbg的介紹

WinDbg是什麼?
WinDbg 是一個調試器(Debugger)。
備註:簡單來說調試器是一種軟件工具。它可以讓程序員在執行程序時暫停程序運行,並檢查程序的狀態,包括變量值、內存狀態和代碼位置信息,以便找出問題所在並進行修復。
我所知的類似的帶有調試器的功能還有後端開發工具比如Visual Studio、前端開發工具、還有我早先用來調試JavaScript的代碼的瀏覽器控制檯。
WinDbg能做什麼?
或者說爲什麼非要用WinDbg來調試?
案例:
案例1:運行一段時間的應用程序的CPU或內存突然升高?
用開發工具調試的前提是我們大體上知道是在哪段代碼出了問題,這樣我通過性能測試得到樣本進行分析。但是服務器的應用程序CPU或內存突然升高我們
無法復現問題,也無法定位是哪個模塊出了問題。
案例2:比如多線程死鎖的問題
我想知道哪個線程正在佔用特殊的臨界區。但Visual Studio調試器無法獲取信息
案例3:內核調試,包括驅動,系統代碼。比如解決系統藍屏的問題
案例4:內存破壞或內存泄漏的問題。
 
WinDbg主要用於以下應用場景:
1. 調試應用程序和驅動程序:開發人員可以使用WinDbg來調試應用程序和驅動程序,定位和解決程序中的bug和錯誤。
2. 分析系統崩潰和錯誤:WinDbg可以幫助分析系統崩潰時生成的內存轉儲文件,以確定導致系統崩潰的原因。
3. 內存泄漏分析:開發人員可以使用WinDbg來分析應用程序的內存使用情況,幫助發現和解決內存泄漏問題。
4. 性能分析:WinDbg還可以用於性能分析,幫助開發人員優化應用程序的性能。
5. 逆向工程:安全研究人員和逆向工程師也可以使用WinDbg來分析惡意軟件或者進行逆向工程工作。
瞭解WinDbg幾個概念?
1、SOS是son of strike的縮寫。是strike 的子集,可以理解成一個擴展的命令集。
2、符號就是PDB文件,我們會在DEBUG模式編譯項目時,會對應的模塊(exe或dll)一起生成出來。它的作用可以簡單地理解對dll進行標註,使調試時通過pdb就能看到局部變量,全局變量,行號等等其他信息。
3、Dump文件是進程的內存鏡像。它是一種二進制的文件,用於存儲系統或應用程序的狀態、堆棧、內存映像、日誌等一系列信息。一般系統會在發生崩潰時自動創建轉儲文件,我們也可以通過工具手動捕捉Dump。
爲了講dump文件逆向到clr上的運行時狀態,所以我們必須要找到當時的運行程序的clr版本,同時也要找到clr版本對應的sos.dll,他們通常是在一起的。
dump是運行在clr之上的記錄的,我們是通過sos指令與clr進行交互,clr可以獲知dump當時記錄的狀態和堆棧等信息,然後通過pdb符號能夠解析出來具體的代碼。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章