WinDBG 提供了多種設(shè)斷點(diǎn)的命令: bp, bu, bm, ba
?
bp 命令是在 某個(gè)地址 下斷點(diǎn), 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 對(duì)于后者,WinDBG 會(huì)自動(dòng)找到 MyApp!SomeFunction 對(duì)應(yīng)的地址并設(shè)置斷點(diǎn)。 但是使用bp的問(wèn)題在于:1)當(dāng)代碼修改之后,函數(shù)地址改變,該斷點(diǎn)仍然保持在相同位置,不一定繼續(xù)有效; 2)WinDBG 不會(huì)把bp斷點(diǎn)保存工作空間中 。? 所以,我比較喜歡用bu 命令。
?
bu 命令是針對(duì) 某個(gè)符號(hào) 下斷點(diǎn)。 比如 bu MyApp!SomeFunction 。 在代碼被修改之后, 該斷點(diǎn)可以隨著函數(shù)地址改變而自動(dòng)更新到最新位置。? 而且bu 斷點(diǎn)會(huì)保存在WinDbg工作空間中, 下次啟動(dòng) Windbg 的時(shí)候該斷點(diǎn)會(huì)自動(dòng)設(shè)置上去。
另外,在模塊沒(méi)有被加載的時(shí)候,bp 斷點(diǎn)會(huì)失敗(因?yàn)楹瘮?shù)地址不存在),而bu 斷點(diǎn)則可以成功。 新版的WinDBG中 bp失敗后會(huì)自動(dòng)被轉(zhuǎn)成bu 。
?
bm 命令也是針對(duì) 符號(hào) 下斷點(diǎn)。 但是它支持 匹配表達(dá)式 。 很多時(shí)候你下好幾個(gè)斷點(diǎn)。 比如,把MyClass 所有的成員函數(shù)都下斷點(diǎn): bu MyApp!MyClass::* , 或者把所有以CreateWindow開(kāi)頭的函數(shù)都下斷點(diǎn): bu user32!CreateWindow* 。
?
以上三個(gè)命令是對(duì)代碼下斷點(diǎn), 我們還可以對(duì)數(shù)據(jù)下斷點(diǎn)。
?
ba 命令就是針對(duì) 數(shù)據(jù) 下斷點(diǎn)的命令, 該斷點(diǎn)在指定內(nèi)存被訪問(wèn)時(shí)觸發(fā)。 命令格式為
ba ? Access ? Size ?[ 地址]
Access 是訪問(wèn)的方式, 比如 e (執(zhí)行), r (讀/寫), w (寫)
Size 是監(jiān)控訪問(wèn)的位置的大小,以字節(jié)為單位。 值為 1、2或4,還可以是 8(64位機(jī))。
?
比如要對(duì)內(nèi)存0x0483DFE進(jìn)行寫操作的時(shí)候下斷點(diǎn),可以用命令 ba w4 0x0483DFE
?
這里順便提以下其他斷點(diǎn)命令:
?
bl ? 列出所有斷點(diǎn)
bc ? 清除斷點(diǎn)
bd 禁用斷點(diǎn)
be 啟動(dòng)被bd 命令經(jīng)用的斷點(diǎn)
?
?
?
>> 原創(chuàng)文章的版權(quán)屬于作者,轉(zhuǎn)載請(qǐng)注明出處和作者信息( http://blog.csdn.net/WinGeek/ ), 謝謝。 <<
?
WinDBG 技巧:設(shè)斷點(diǎn)命令詳解(bp, bu, bm, ba 以及bl, bc, bd, be)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
