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