在我們用調(diào)試器打開或者附加調(diào)試目標(biāo)之后,目標(biāo)進(jìn)程就處于調(diào)試環(huán)境中了。而調(diào)試器通常是用createprocess方法以debug模式來打開目標(biāo)進(jìn)程。從此目標(biāo)進(jìn)程中所發(fā)生的各種事件都會由操作系統(tǒng)派發(fā)到調(diào)試器中來,如下就是目標(biāo)進(jìn)程可能會產(chǎn)生的事件。
cpr:就是創(chuàng)建目標(biāo)進(jìn)程的事件,也就是第一個事件。
exp:退出目標(biāo)進(jìn)程的事件,也是最后一個事件。
ct:創(chuàng)建線程的事件。
et:退出進(jìn)程的事件。
ld:加載模塊到進(jìn)程地址空間之后還沒有執(zhí)行。
ud:調(diào)用freeLibrary的缷載模塊的事件。
有關(guān)調(diào)試目標(biāo)的更多的事件,可以輸入sx以查看。每一列是事件名,第二例是事件的簡短描述,第三例是缺省的處理方式。也可以單擊windbg中的debug菜單中的event fileter項(xiàng)來打開對話框窗口來設(shè)置更多的細(xì)節(jié)。
在調(diào)試環(huán)境中,對各種事件的處理方式提供了缺省的處理方式。我們也可以在調(diào)試過程中,根據(jù)需要改變相應(yīng)的處理方式。
比如
我們想在內(nèi)核載入driver1.sys驅(qū)動模塊后停止以幫助我們下斷點(diǎn)。
kd:sxe ld:driver1.sys
我們不關(guān)心載入driver2.sys驅(qū)動模塊的事件。
kd: sxd ld:driver2.sys
我們忽略所有模塊的載入輸出信息
kd:sxi ld:*
當(dāng)我們使用sxd時,相應(yīng)事件的輸出信息是會輸出到調(diào)試環(huán)境中,但不會斷下來。而使用sxi時,則調(diào)試器不接收相應(yīng)的消息,也沒有輸出信息在窗口中輸出。