重要命令

記錄你的工作

記住你做過的事情並保留長輸出,這些輸出無法儲存在 WinDbg 的緩衝區中。有一個日誌可用於重現除錯步驟,例如在 Stack Overflow 上提問。

命令 目的
.logopen 建立一個日誌檔案
.logclose 關閉日誌檔案
.dump 儲存故障轉儲檔案(當前除錯會話的快照)

使用符號

如果沒有或有不正確的符號,你可能會收到錯誤資訊並被誤導。在 WinDbg 中開始工作之前,請確保你熟悉這些命令。另請參見如何在 WinDbg 中設定符號

命令 目的
.symfix 設定或新增符號到官方 Microsoft 符號路徑
.sympath 設定或新增自己或第三方符號
.reload 重新載入符號
.symopt 定義符號處理選項
!sym 控制符號載入
x 檢查符號
ln 列出最近的符號

崩潰分析

找出發生了什麼(在崩潰轉儲中)以及如何處理事件(在實時除錯中)。

命令 目的
.exr 顯示異常記錄
.lastevent 顯示上次活動
sx 定義異常處理
!analyze 分析崩潰或掛起
!avrf 應用驗證者

環境

檢查程序名稱和版本資訊。

命令 目的
(管)
lm 模組列表

執行緒,呼叫堆疊,暫存器和記憶體

檢查細節。

命令 目的
~ 執行緒列表
r 暫存器
k 呼叫堆疊
d * 顯示記憶體
e * 編輯記憶
s 搜尋記憶
.formats 在數字格式之間轉換
? 評估表達
u * 拆卸
a 集合
!address 記憶資訊

控制目標

在實時除錯中,控制執行。

命令 目的
g 去/繼續
gu
p 一小步
t 跟蹤(單步和輸出暫存器)
bp 設定斷點
bl 斷點列表

使用擴充套件

擴充套件可以提供顯著的優勢和增強。

命令 目的
.load 載入擴充套件(完整路徑)
.loadby 相對於模組的負載擴充套件
.chain 顯示載入的副檔名
.unload 解除安裝擴充套件

停止除錯

命令 目的
q 退出並終止申請
qd 脫離並退出

連線和分離

命令 目的
.tlist 流程清單
.attach 附加到過程
.create 建立流程並附加
.childdbg 定義子程序除錯行為
.detach 脫離過程
.kill 殺死一個程序
.restart 重啟過程

WinDbg 的行為

命令 目的
.prefer_dml 設定偵錯程式標記語言處理
.effmach 切換位

可用性命令

命令 目的
.cmdtree 在單獨的視窗中載入帶有預定義命令的文字檔案

得到幫助

命令 目的
.hh 顯示 WinDbg 命令的幫助手冊