windbg基本命令

來源:互聯網
上載者:User

標籤:des   blog   http   使用   檔案   資料   2014   art   

1,

.reload

k 當前呼叫堆疊。
u 當前正在執行的代碼。

 

2,


~ 查看被調試進程中的線程資訊
每一行是一個線程的資訊。第一行中,0 表示這個進程的編號;1ff4.1038 是 16 進位數
字,前者是當前進程的進程 ID,後者是線程 ID;後面的資訊是線程狀態和 Teb 地址。第二
行的線程編號前有一個點號“.”,表示這是當前線程,也就是剛才使用 u 和 k 命令查看到的
線程。

0:046>,冒號前的數字表示當前的進程號,同時調試多個進程
時,每個進程都會被指派一個進程號;冒號後的 000 表示線程號。
進行核心調試時,如果是單一處理器系統,提示符是 kd>的形式;如果
是多處理器系統,則是 0: kd>的形式,前面的 0 表示處理器號。

 

3,

~threadIDs 切換到指定threadID線程。

4,

軟斷點

bp:  可以直接對某個代碼地址設定斷點。

0:000> bp TestModule!main

在TestModule內的main函數設定斷點。同直接F9。

 

bl 查看已經存在的斷點,bd禁用斷點,de重啟斷點,bc刪除斷點。

0:000> bl 

0 e 00401030 [C:\Users\NetRoc\Desktop\TestDebug1\T estDebug1.cpp @ 23] 
1 e 0040105d [C:\Users\NetRoc\Desktop\TestDebug1\T estDebug1.cpp @ 27] 

如上面命令輸出中的第二行,1 表示斷點 ID。當禁用、重新啟或刪除斷點,或者其他命令來操作這個斷點時,都需要用到這個 ID;

第二個“e”表示斷點是啟用的,如果是“d”則表示當前被禁用,如果帶“u”則說明是後面將要介紹的未定斷點;第三列的 0040105d 是該斷點的地址;

後面的內容是斷點所在的源檔案和行號。

 

對於還沒有載入到記憶體中的模組,比如在調用了 LoadLibrary 之後才載入的DLL。如果使用 bp 來對這個模組中的函數設定斷點,會找不到符號,這時就會被調試器自動轉變成用 bu 命令來設定的未定斷點。

bu 可以對還不能識別的符號設定斷點,當系統中有新模組載入進來時,調試器會對未定斷點再次進行識別,如果找到了匹配的符號則會設定它。

對於bu的斷點上面斷點ID後面的e顯示是eu,表示啟用的未定斷點。

 

5,

硬斷點 ba:

 


ba 訪問斷點可以在某個記憶體位址處的資料被讀取、寫入或者執行的時候中斷下來。

首先用.restart 命令重新啟動偵錯目標。
對局部變數 x 有賦值操作 x *= 10 。
輸入 ba w4 @@C++(&x)命令。“&i”表示變數 i 的地址,“w”表示寫入操作,“4”表示只處理&x地址處 4 位元組的寫入操作。F5 運行,程式被成功中斷下來 Breakpoint 1 hit。

WinDbg 的資料斷點是通過 CPU 硬體斷點實現的。而 DRx 寄存器所設定的記憶體訪問斷
點屬於陷阱(Trap)而不是錯誤(Fault),CPU 對陷阱的處理是執行完該條指令後觸發異常。因
此 WinDbg 只能在之後的一條指令處斷下來。

 

Windows 調試工具支援兩種文法的運算式:MASM 文法和 C++文法。如果沒有特別指
明的話,預設是使用 MASM 運算式文法。一般來說,MASM 文法的運算式用來表示地址比
較方便,而 C++運算式用來表示結構或者類成員比較方便。可以通過@@C++(…)或者
@@masm(…)來包含運算式以明確指明所使用的文法。當使用 MASM 文法時,可以用雙冒
號(::)或者雙底線(__)來表示類成員;但是使用 C++文法時則只能使用雙冒號。

 

6,

d    :查看記憶體

db   :按byte查看記憶體

dd   : 按DWORD查看記憶體

dv   :查看當前範圍下局部變數的類型和值

? x   :  ?運算式求值命令常常用來查看符號所代表的值。 ? x 命令,它可以顯示符號 x 對應的值,即局部變數 x的地址。

r    :查看或者修改寄存器和偽寄存器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.