WinDBG 技巧:設斷點命令詳解(bp, bu, bm, ba 以及bl, bc, bd, be)

來源:互聯網
上載者:User

bp 命令是在某個地址下斷點, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 對於後者,WinDBG 會自動找到MyApp!SomeFunction 對應的地址並設定斷點。但是使用bp的問題在於:1)當代碼修改之後,函數地址改變,該斷點仍然保持在相同位置,不一定繼續有效; 2)WinDBG 不會把bp斷點儲存工作空間中 。 所以,我比較喜歡用bu 命令。

bu 命令是針對某個符號下斷點。 比如 bu MyApp!SomeFunction 。 在代碼被修改之後, 該斷點可以隨著函數地址改變而自動更新到最新位置。 而且bu 斷點會儲存在WinDbg工作空間中, 下次啟動 Windbg 的時候該斷點會自動化佈建上去。

另外,在模組沒有被載入的時候,bp 斷點會失敗(因為函數地址不存在),而bu 斷點則可以成功。 新版的WinDBG中 bp失敗後會自動被轉成bu 。

bm 命令也是針對符號下斷點。 但是它支援匹配運算式。 很多時候你下好幾個斷點。 比如,把MyClass 所有的成員函數都下斷點: bu MyApp!MyClass::* , 或者把所有以CreateWindow開頭的函數都下斷點: bu user32!CreateWindow* 。

以上三個命令是對代碼下斷點, 我們還可以對資料下斷點。

ba 命令就是針對資料下斷點的命令, 該斷點在指定記憶體被訪問時觸發。 命令格式為

ba Access Size [地址]

Access 是訪問的方式, 比如 e (執行), r (讀/寫), w (寫)

Size 是監控訪問的位置的大小,以位元組為單位。 值為 1、2或4,還可以是 8(64位機)。

比如要對記憶體0x0483DFE進行寫操作的時候下斷點,可以用命令 ba w4 0x0483DFE

這裡順便提以下其他斷點命令:

bl 列出所有斷點

bc 清除斷點

bd 禁用斷點

be 啟動被bd 命令經用的斷點

>> 原創文章的著作權屬於作者,轉載請註明出處和作者資訊(http://blog.csdn.net/WinGeek/), 謝謝。 <<

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.