當前位置:首頁 > 電腦軟件 > 調(diào)試編譯 > WinDbg(分析dump文件)

WinDbg(分析dump文件)

版本:v10.0.19041.1 大?。?0.19M 語言:簡體中文 類別:調(diào)試編譯
  • 類型:國產(chǎn)軟件
  • 授權:免費軟件
  • 更新:2023-10-17
  • 環(huán)境:Windows11,Windows10,Windows8,Windows7
  • 本地下載
9
0% 0%

情介紹

WinDbg完整版是一款微軟官方推出的在Windows平臺下使用的強大的用戶態(tài)和內(nèi)核態(tài)調(diào)試工具,相比較許多用戶熟知的VS(Visual Studio),這是一個輕量級的調(diào)試工具,文件大小很小,倒是因為只有調(diào)試功能,所以軟件的功能要比我們的VS更好,除此之外軟件的另外一個用途就是為我們的用戶分析dump數(shù)據(jù)了。WinDbg具有很好的靈活性和可擴展性,提供了130多條標準命令,140多條元命令和難以計數(shù)的擴展命令。它可以用于Kernel模式調(diào)試和用戶模式調(diào)試,還可以調(diào)試Dump文件,能夠通過dmp文件輕松的定位到問題根源,可用于分析藍屏、程序崩潰(IE崩潰)原因,是我們?nèi)粘9ぷ髦斜夭豢缮俚囊粋€有力工具,學會使用它,將有效提升我們的問題解決效率和準確率。這款軟件中文版支持Source和Assembly兩種模式的調(diào)試,不僅可以調(diào)試應用程序,還可以進行Kernel Debug,如果用戶是一位開發(fā)人員,想要很好的進行軟件的調(diào)試,那么不要錯過這款軟件。

中文版快捷鍵

Command                 Atl+1           輸入命令、顯示命令結果和調(diào)試信息輸出
Watch                   Alt+2           觀察指令全局變量、局部變量和寄存器的信息
Locals                  Alt+3           自動顯示當前函數(shù)的所有局部變量
Registers               Atl+4           觀察和修改寄存器的值
Memory                  Alt+5           觀察和修改內(nèi)存數(shù)據(jù)
Call Stack              Alt+6           棧中記錄的函數(shù)調(diào)用序列
Disassembly             Alt+7           反匯編
Scratch Pad             Alt+8           白板,可以用來做調(diào)試筆記等
Processes and Threads   Alt+9           顯示所有調(diào)試目標的列表,包括進程和線程等
Command Browser         Alt+N           執(zhí)行和瀏覽命令

常用命令

查看版本信息:version、vertarget
查看模塊信息:lm、!dlls、!lmvi等
調(diào)用棧:用k命令顯示調(diào)用棧,用.frames命令切換棧幀
內(nèi)存操作:讀內(nèi)存用d命令,寫內(nèi)存用e命令
自動分析:!analyze、!owner等
符號命令:.reload加載符號, .sympath設置符號路徑, !sym設置符號選項
進程線程:!process顯示進程信息; .process顯示當前進程,或用.process /i 切換當前進程;!peb顯示進程環(huán)境塊內(nèi)容;~命令顯示線程列表,用~n s可切換當前線程,n表示線程號;.thread顯示當前線程。
windbg配置方法
運行WinDbg->菜單->File->Symbol File Path->按照下面的方法設置_NT_SYMBOL_PATH變量:
在彈出的框中輸入“C:\MyCodesSymbols; SRV*C:\MyLocalSymbols*http://msdl.microsoft.com/download/symbols”(按照這樣設置,WinDbg將先從本地文件夾C:\MyCodesSymbols中查找Symbol,如果找不到,則自動從MS的Symbol Server上下載Symbols)。

使用方法

WinDbg提供了圖形界面和命令行兩種運行方式。這里介紹使用圖形界面的WinDbg來調(diào)試應用程序:
File->OpenExecutable->可以選擇一個可執(zhí)行文件進行調(diào)試;
File->Attache to a Process->可以選擇一個運行中的進程,并對其進行調(diào)試;

然后選擇需要調(diào)試的程序。

至此,我們就可以在上圖中用紅色方框標記的文本框中輸入各個功能指令了。
有關指令的幫助文檔,可以參考:Help->Contents->Debugging Tools for Windows->Debuggers->Debugger Reference,該目錄下列集了所有指令機器功能說明!

常見問題

windbg怎么查看?
1 安裝windbg (從微軟網(wǎng)站上下載,free), 運行windbg, 設置symbol path,
File- Symbol File Path,
輸入SRV*C:\websymbols*http://msdl.microsoft.com/download/symbols,
如果你已經(jīng)有了symbo path, 直接輸入就可以了。
2. 生成一個dump, 可以用windbg提供的adplus命令來生成,或者有一個簡單的工具, IIS
Diagnostics, 這個也可以從微軟下, 假設現(xiàn)在你的application hang 或者 crash 了,
運行這個Diagnostics, cancel彈出選擇rule type的對話框,
然后選擇process tab,
找到你要dump的進程, 右鍵生成dump就可以了, 然后可以順便用這個工具直接分析了,還是說winbdg吧。
3. 現(xiàn)在dump有了, 運行windbg,打開這個dump (File- Open
Crash Dump...), 運行下面的幾個命令.
.load path\SOS.dll
(path是全路經(jīng),
一般在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727,
根據(jù)自己.net版本選不同的)
.reload -f mscorwks.dll!threads
(察看所有線程(managed),
這步一般就可以看到exception在哪一個線程了, 假設看到在 0 thread)~0s
(轉(zhuǎn)到 0 thread)
!clrstack (查看call stack)
然后可以通過windbg上面的一些快捷功能打開 Process and Threads 窗口 和 call stack
窗口,雙擊call stack 里面的 function call, 就可以跳轉(zhuǎn)到source code了。
!printException
(查看exception, 僅限于managed exception, 找到第一次被拋出來的exception address,
一看就知道哪個了)
調(diào)試時t命令和p命令的區(qū)別?
t會進入函數(shù)調(diào)用中,即call p,會進入入口地址為p的函數(shù)中去。
p對于上述情況不會進入函數(shù)體,而直接執(zhí)行call p,并跳躍到下一條指令。
感覺也和VC中的單步和跟蹤差不多。
打不開 dmp文件?
windows發(fā)生藍屏時,如果系統(tǒng)屬性有下圖設置,windows會自動生成minidump文件,該文件記錄藍屏生成代碼和導致藍屏出現(xiàn)的進程,通過windebug的軟件來分析這個minidump文件.我們就可以找到藍屏出錯的原因了。這個文件保存目錄是C:\windows\minidump文件夾,一般生成的名字為:Mini040108-01.dmp.
如何利用 WinDbg 進行雙機調(diào)試?
其實并不是只有在生成不了轉(zhuǎn)儲文件的情形下才能使用雙機調(diào)試,在任何情況下都是可以使用的,尤其是調(diào)試內(nèi)核問題時,雙機調(diào)試不必限于轉(zhuǎn)儲文件類型,均可獲得一切可以獲得的信息,相當于完全內(nèi)存轉(zhuǎn)儲了。而且,雙機調(diào)試可以調(diào)試到系統(tǒng)啟動階段和之后任意時刻的問題,這是內(nèi)存轉(zhuǎn)儲做不到的。

更新日志:

v10.0.19041.1版本
修正了幾個內(nèi)核調(diào)試傳送問題。

載地址

  • 電腦版
WinDbg(分析dump文件) v10.0.19041.1官方版

網(wǎng)友評論

0條評論
(您的評論需要經(jīng)過審核才能顯示)