簡介:
當出現進程CPU佔用率高、進程假死(不退出)、進程發生崩潰時,可以參考以下的windbg命令使用說明,進一步提供有價值的信息給開發。
1.進程CPU佔用率高問題跟進方法
1)開啓windbg,attach到對應的進程上
2)加載目標程序PDB和系統PDB:
srv*DownstreamStore*http://msdl.microsoft.com/download/symbols
3)查看所有線程的運行時間
命令: !runaway
4)切換至CPU佔用較高的工作線程,如上圖的6號線程
命令: ~6s
5)查看函數調用棧
命令: kb
2.進程不退出並且不佔用CPU時跟進方法
1)開啓windbg,attach到對應的進程上
2)加載目標程序PDB和系統PDB:
srv*DownstreamStore*http://msdl.microsoft.com/download/symbols
3)切換至0號主線程
命令: ~0s
4)查看主線程的函數調用棧
命令: kb
正常的調用棧一般是:
5)如果該線程擁有鎖,使用!cs查看鎖的擁有者
命令: !cs [內存地址]
以上命令會顯示哪個線程擁有鎖owner thread id = 0xXXXX
6)切換至擁有鎖的線程
命令: ~Xs X代表線程序號
7)查看函數調用棧
命令: kb
3.進程發生崩潰跟進方法
1)開啓windbg,打開對應的dump文件
2)加載目標程序PDB和系統PDB:
srv*DownstreamStore*http://msdl.microsoft.com/download/symbols
3)查看異常分析
命令: !analyze -v
4)切換至崩潰現場
命令: .ecxr
5)查看崩潰調用棧
命令: kb
當不確定exe或者dll版本時,可以使用lm命令查看詳細信息:
查看dll的版本號Lm vm xxx xxx代表dll或者exe的名稱
當不確定線程崩潰或假死時,可以使用~*kb查看所有線程的函數調用棧,然後逐個分析可能崩潰或假死的線程。
查看全部線程信息~*kb