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

WinDbg(分析dump文件)

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

情介紹

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

中文版快捷鍵

Command                 Atl+1           輸入命令、顯示命令結(jié)果和調(diào)試信息輸出
Watch                   Alt+2           觀察指令全局變量、局部變量和寄存器的信息
Locals                  Alt+3           自動(dòng)顯示當(dāng)前函數(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           白板,可以用來(lái)做調(diào)試筆記等
Processes and Threads   Alt+9           顯示所有調(diào)試目標(biāo)的列表,包括進(jìn)程和線程等
Command Browser         Alt+N           執(zhí)行和瀏覽命令

常用命令

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

使用方法

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

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

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

常見(jiàn)問(wèn)題

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

更新日志:

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

載地址

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

網(wǎng)友評(píng)論

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