1,
.reload
k 當(dāng)前調(diào)用堆棧。
u 當(dāng)前正在執(zhí)行的代碼。
2,
~ 查看被調(diào)試進(jìn)程中的線程信息
每一行是一個(gè)線程的信息。第一行中,0 表示這個(gè)進(jìn)程的編號(hào);1ff4.1038 是 16 進(jìn)制數(shù)
字,前者是當(dāng)前進(jìn)程的進(jìn)程 ID,后者是線程 ID;后面的信息是線程狀態(tài)和 Teb 地址。第二
行的線程編號(hào)前有一個(gè)點(diǎn)號(hào)“.”,表示這是當(dāng)前線程,也就是剛才使用 u 和 k 命令查看到的
線程。
0:046>,冒號(hào)前的數(shù)字表示當(dāng)前的進(jìn)程號(hào),同時(shí)調(diào)試多個(gè)進(jìn)程
時(shí),每個(gè)進(jìn)程都會(huì)被指派一個(gè)進(jìn)程號(hào);冒號(hào)后的 000 表示線程號(hào)。
進(jìn)行內(nèi)核調(diào)試時(shí),如果是單處理器系統(tǒng),提示符是 kd>的形式;如果
是多處理器系統(tǒng),則是 0: kd>的形式,前面的 0 表示處理器號(hào)。
3,
~threadIDs 切換到指定threadID線程。
4,
軟斷點(diǎn)
bp: 可以直接對(duì)某個(gè)代碼地址設(shè)置斷點(diǎn)。
0:000> bp TestModule!main
在TestModule內(nèi)的main函數(shù)設(shè)置斷點(diǎn)。同直接F9。
bl 查看已經(jīng)存在的斷點(diǎn),bd禁用斷點(diǎn),de重啟斷點(diǎn),bc刪除斷點(diǎn)。
0:000> bl
0 e 00401030 [C:UsersNetRocDesktopTestDebug1T estDebug1.cpp @ 23]
1 e 0040105d [C:UsersNetRocDesktopTestDebug1T estDebug1.cpp @ 27]
如上面命令輸出中的第二行,1 表示斷點(diǎn) ID。當(dāng)禁用、重新啟或刪除斷點(diǎn),或者其他命令來操作這個(gè)斷點(diǎn)時(shí),都需要用到這個(gè) ID;
第二個(gè)“e”表示斷點(diǎn)是啟用的,如果是“d”則表示當(dāng)前被禁用,如果帶“u”則說明是后面將要介紹的未定斷點(diǎn);第三列的 0040105d 是該斷點(diǎn)的地址;
后面的內(nèi)容是斷點(diǎn)所在的源文件和行號(hào)。
對(duì)于還沒有加載到內(nèi)存中的模塊,比如在調(diào)用了 LoadLibrary 之后才加載的DLL。如果使用 bp 來對(duì)這個(gè)模塊中的函數(shù)設(shè)置斷點(diǎn),會(huì)找不到符號(hào),這時(shí)就會(huì)被調(diào)試器自動(dòng)轉(zhuǎn)變成用 bu 命令來設(shè)置的未定斷點(diǎn)。
bu 可以對(duì)還不能識(shí)別的符號(hào)設(shè)置斷點(diǎn),當(dāng)系統(tǒng)中有新模塊加載進(jìn)來時(shí),調(diào)試器會(huì)對(duì)未定斷點(diǎn)再次進(jìn)行識(shí)別,如果找到了匹配的符號(hào)則會(huì)設(shè)置它。
對(duì)于bu的斷點(diǎn)上面斷點(diǎn)ID后面的e顯示是eu,表示啟用的未定斷點(diǎn)。
5,
硬斷點(diǎn) ba:
ba 訪問斷點(diǎn)可以在某個(gè)內(nèi)存地址處的數(shù)據(jù)被讀取、寫入或者執(zhí)行的時(shí)候中斷下來。
首先用.restart 命令重新啟動(dòng)調(diào)試目標(biāo)。
對(duì)局部變量 x 有賦值操作 x *= 10 。
輸入 ba w4 @@C++(&x)命令。“&i”表示變量 i 的地址,“w”表示寫入操作,“4”表示只處理&x地址處 4 字節(jié)的寫入操作。F5 運(yùn)行,程序被成功中斷下來 Breakpoint 1 hit。
WinDbg 的數(shù)據(jù)斷點(diǎn)是通過 CPU 硬件斷點(diǎn)實(shí)現(xiàn)的。而 DRx 寄存器所設(shè)置的內(nèi)存訪問斷
點(diǎn)屬于陷阱(Trap)而不是錯(cuò)誤(Fault),CPU 對(duì)陷阱的處理是執(zhí)行完該條指令后觸發(fā)異常。因
此 WinDbg 只能在之后的一條指令處斷下來。
Windows 調(diào)試工具支持兩種語法的表達(dá)式:MASM 語法和 C++語法。如果沒有特別指
明的話,默認(rèn)是使用 MASM 表達(dá)式語法。一般來說,MASM 語法的表達(dá)式用來表示地址比
較方便,而 C++表達(dá)式用來表示結(jié)構(gòu)或者類成員比較方便??梢酝ㄟ^@@C++(…)或者
@@masm(…)來包含表達(dá)式以明確指明所使用的語法。當(dāng)使用 MASM 語法時(shí),可以用雙冒
號(hào)(::)或者雙下劃線(__)來表示類成員;但是使用 C++語法時(shí)則只能使用雙冒號(hào)。
6,
d ?。翰榭磧?nèi)存
db ?。喊碽yte查看內(nèi)存
dd : 按DWORD查看內(nèi)存
dv :查看當(dāng)前作用域下局部變量的類型和值
? x : ?表達(dá)式求值命令常常用來查看符號(hào)所代表的值。 ? x 命令,它可以顯示符號(hào) x 對(duì)應(yīng)的值,即局部變量 x的地址。
r ?。翰榭椿蛘咝薷募拇嫫骱蛡渭拇嫫?/p>
分享題目:windbg基本命令-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://aaarwkj.com/article4/iccoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、搜索引擎優(yōu)化、動(dòng)態(tài)網(wǎng)站、網(wǎng)站設(shè)計(jì)公司、響應(yīng)式網(wǎng)站、微信公眾號(hào)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容