Windbg 使用指南
Windbg是Windows官方用于分析日志的工具。
dmp文件位置
dmp文件路徑在:C:\Windows\Minidump
如何打開dmp文件
- 可直接將相關(guān)的dmp文件拖到windbg中打開。
-
ctrl+s打開符號表,將下列文字復(fù)制進符號表:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols - 之后再打開相應(yīng)的dmp文件(如果上一個dmp文件沒關(guān)閉是無法正常打開新的dmp文件,
ctrl+f5關(guān)閉上一個dmp文件)。
查看報錯信息
- 在下面就可以看到相應(yīng)的報錯信息。
- 如果運行時間不到1分鐘則說明是開機就藍屏,大概率是硬件問題。
- 如果是驅(qū)動問題,則在相應(yīng)機器上尋找驅(qū)動對應(yīng)的軟件,對驅(qū)動損壞還是沖突進行判斷。
Windbg常見命令
!analyze -v
詳細列出dump文件的信息,其中會有導(dǎo)致錯誤的代碼片段,以及一些列數(shù)據(jù)可供分析。
kb
顯示當前線程調(diào)用堆棧,一般可確認是程序哪一行出了問題。
~*kb
顯示所有線程調(diào)用堆棧。
lm
顯示當前加載的模塊信息(*.pdb *.dll)。
kP
可以看函數(shù)的入?yún)ⅰ?/p>
!for_each_frame dv /t
可以看函數(shù)中的局部變量。
dc, db
查看某一內(nèi)存中的值,可以直接接變量名(不過可能需要回溯棧)。
!threads
顯示所有線程。
~0s, ~1s
進入某個線程。
!frame ProcessA!FunctionA
查看某一變量時有時需要回溯棧。
!uniqstack
擴展命令顯示當前進程中所有線程的調(diào)用堆棧,除開重復(fù)的那些。
!teb
擴展以格式化后的形式顯示線程環(huán)境塊(TEB)的信息。
s-sa 和 s-su
命令搜索未指定的ASCII和Unicode字符串。這在檢查某段內(nèi)存是否包含可打印字符時有用。
dds、dps 和 dqs
命令顯示給定范圍內(nèi)存的內(nèi)容。這些命令是把內(nèi)存區(qū)域轉(zhuǎn)儲出來,并把內(nèi)存中每個元素都視為一個符號對其進行解析。
- dds:四字節(jié)視為一個符號。
- dqs:每8字節(jié)視為一個符號。
- dps:根據(jù)當前處理器架構(gòu)來選擇最合適的長度。
.kframes
命令設(shè)置堆棧回溯顯示的默認長度。默認20。
k, kb, kd, kp, kP, kv
顯示給定線程的調(diào)用堆棧,以及其他相關(guān)信息。通常要結(jié)合使用,否則顯示的內(nèi)容很少。
.reload /i xxx.dll
忽略.pdb文件版本不匹配的情況。