在WinDBG中設定斷點的命令

2021-07-11 07:40:54 字數 1587 閱讀 5861

**:

命令

~0 bp 02sample!kbtest::fibonacci_stdcall "r esp"

在零號執行緒上的kbtest類的fibonacci_stdcall函式上設定斷點, 並且在觸發斷點時執行"r esp"命令.

bl

列出所有已經設定了的斷點

bc *

清除所有斷點

bp 02sample!kbtest::fibonacci_stdcall 「r esp;g」

在所有執行緒上設定斷點, 並且在觸發斷點時執行"resp;g"兩條命令.

bm 02sample!*kbtest*

命令bm可以在引數中指定乙個符號模式, 這樣在所有與這個符號匹配的位址上都將設定乙個斷點. 上面的命令使用bm在kbtest的所有方法上設定斷點.

bu ole32!coinitializeex

windows作業系統會在必要時載入動態鏈結庫, 而我們經常需要在乙個還沒有被載入的模組上設定斷點. 命令bu可以用來設定乙個延遲斷點, 只有當這個斷點所在的模組被載入時, 延遲斷點才能成為乙個真正的斷點. 上面的命令將在dcom的初始化函式中設定乙個延遲斷點.

記憶體訪問斷點

記憶體訪問斷點的名令為ba, 即break on access.

使用者態的命令語法:

[~thread]ba[id] access size [options] [address [passes]] ["commandstring"]

舉例:

ba w4 gglobal+0

上面命令設定了乙個斷點, 使處理器監視從gglobal起始位址開始的4個字的內的寫入操作, 一旦發現有試圖修改這個位址的操作, 立即進入斷點.

條件斷點

在每個斷點上都可以設定乙個命令, 每當除錯目標處罰這個斷點時, 偵錯程式都會執行這個命令. 通過這個功能我們可以建立非常有用的條件斷點.

我們經常會遇到某個函式只有在某種條件下才會發生故障, 因此我們希望程式在函式某條件下發生故障時才停下來, 以進行進一步的分析. 這可以通過有條件地執行g命令來實現. 如果函式執行後沒有檢測到錯誤條件的話, 就繼續執行. 否則就停下來.

bp 02sample!kbtest::fibonacci_stdcall 「gu; .if(eax!=1) 」

上面的命令中, 我們配置了乙個斷點, 斷在kbtest類的fibonacci_stdcall函式開始的時候, 然後立即執行命令gu(即go up, 目標會開始執行直到當前函式結束), 函式執行結束後檢測函式的返回值(eax), 如果不是1, 則繼續執行(g), 否則, 進入斷點.

參考資料

<>

Windbg斷點命令

windbg斷點命令 1 bu bp bm設定軟體斷點 a bp設定位址關聯的斷點 b bu設定符號關聯的斷點 c bm支援設定含萬用字元的斷點,可以一次建立乙個或多個bu或bp bm d 斷點 bp和bu的主要區別 a bp所設斷點和位址關聯,如果模組把該位址的指令移到其它地方,斷點不會隨之移動,...

Windbg斷點命令

文章 1 bu bp bm設定軟體斷點 a bp設定位址關聯的斷點 b bu設定符號關聯的斷點 c bm支援設定含萬用字元的斷點,可以一次建立乙個或多個bu或bp bm d 斷點 bp和bu的主要區別 a bp所設斷點和位址關聯,如果模組把該位址的指令移到其它地方,斷點不會隨之移動,而是依然關聯在在...

windbg設定條件斷點

一直以為windbg的bp斷點只是簡單的在某個位址上下斷點,後來才發現bp斷點功能很強大 除了可以設定條件斷點還是windbg指令碼的基礎.使用方法很簡單 bp address if condition else 具體例子形如 bp 4dbg.cpp 18 if hfile 0 else 這裡是對原...