重要命令

記錄你的工作

記住你做過的事情並保留長輸出,這些輸出無法儲存在 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 命令的幫助手冊