設(shè)置斷點的命令 切換斷點是什么意思?怎么應(yīng)用?
切換斷點是什么意思?怎么應(yīng)用?斷點通常安排在程序代碼中能夠反映程序執(zhí)行狀態(tài)的部分。打開“代碼編輯器”窗口,將光標(biāo)指向要作為斷點的代碼行,然后使用“調(diào)試”菜單中的“切換斷點”命令。設(shè)置為斷點的代碼行將被
切換斷點是什么意思?怎么應(yīng)用?
斷點通常安排在程序代碼中能夠反映程序執(zhí)行狀態(tài)的部分。
打開“代碼編輯器”窗口,將光標(biāo)指向要作為斷點的代碼行,然后使用“調(diào)試”菜單中的“切換斷點”命令。設(shè)置為斷點的代碼行將被加粗并突出顯示。
中斷隱指令由哪個硬件執(zhí)行?
中斷隱式指令由CPU執(zhí)行。
中斷隱式指令是指CPU響應(yīng)一個中斷,經(jīng)過一些操作后,再執(zhí)行中斷服務(wù)程序的操作。
中斷隱式指令在指令系統(tǒng)中不是真正的指令,它沒有操作碼,所以中斷隱式指令是一種不被允許的,用戶不能使用的特殊指令。其完成的業(yè)務(wù)主要包括:
(1)保存斷點
為了保證中斷服務(wù)程序執(zhí)行后能正確返回原程序,必須保存原程序的斷點(即程序計數(shù)器(PC)的內(nèi)容)。斷點可以被推入堆棧或存儲在主內(nèi)存的特定單元中。
(2)暫時不允許中斷
暫時不允許中斷。在中斷服務(wù)程序中,為了保護中斷場景(即CPU主寄存器的內(nèi)容)不被新的中斷中斷,需要關(guān)閉中斷,以保證中斷服務(wù)程序執(zhí)行后被中斷的程序能夠正確執(zhí)行。
在中斷隱藏指令中并不是全部由硬件自動關(guān)閉,有一部分是由軟件(中斷服務(wù)程序)實現(xiàn)的。中斷服務(wù)程序通常用于保存通用寄存器和狀態(tài)寄存器的內(nèi)容。
(3)導(dǎo)出中斷服務(wù)程序
導(dǎo)出中斷服務(wù)程序的實質(zhì)是取出中斷服務(wù)程序的入口地址,并發(fā)送給程序計數(shù)器(PC)。對于矢量中斷和非矢量中斷,中斷服務(wù)程序的方法是不同的。
斷點類型有哪些?
斷點的類型
抄送斷點
也叫int3/F2斷點,軟件執(zhí)行int3指令時程序會暫停,int3指令的機器碼是CC。設(shè)置CC斷點后,原位置的機器碼會被調(diào)試器修改為0xCC(并備份原數(shù)據(jù)),程序執(zhí)行到0xCC時程序會被掛起(調(diào)試器做的事情)。
所以也就是說,如果我們的程序中有0xCC沒有調(diào)試器,程序就不會暫停。
優(yōu)點:可以設(shè)置無數(shù)。
缺點:容易被察覺。
內(nèi)存斷點
分為:
(1)內(nèi)存執(zhí)行斷點
機器碼作為程序執(zhí)行的時候是破的。
(2)內(nèi)存寫斷點
重寫這部分機器碼的時候壞了。
(3)內(nèi)存訪問斷點
訪問執(zhí)行|寫入。
設(shè)置內(nèi)存斷點后,調(diào)試器將向斷點所在的內(nèi)存頁添加PAGE_NOACCESS屬性。該屬性將設(shè)置當(dāng)前內(nèi)存頁面,禁止任何形式的訪問。如果你訪問它,就會觸發(fā)一個內(nèi)存訪問異常,然后調(diào)試器會捕捉這個異常,判斷這個異常觸發(fā)的位置和你的斷點。無論位置是否相同,接管異常并暫停程序,否則,釋放程序。
優(yōu)點:與CC斷點相比,不容易被檢測到。
缺點:只能設(shè)置一個(新設(shè)置的內(nèi)存斷點會覆蓋原有的內(nèi)存斷點),調(diào)試器中沒有相應(yīng)的記錄窗口,程序重裝后會消失。
硬件斷點
在寄存器中,有一些寄存器,用于調(diào)試。人們稱之為調(diào)試寄存器,有DR0到DR7八個名字。
Dr0-Dr3存儲中斷的地址,Dr4和Dr5一般不使用(保留),Dr6和Dr7記錄Dr0-Dr3中中斷地址的屬性。
硬件斷點最不容易被打破,可以分為三種類型:
(1)硬件執(zhí)行斷點。
(2)硬件寫斷點。
(3)硬件訪問斷點。
當(dāng)硬件斷點生效時,他會先執(zhí)行合格代碼,執(zhí)行完后再停止,而內(nèi)存斷點和CC斷點會在合格代碼即將執(zhí)行時被打破。
優(yōu)點:更難檢測,程序重裝后不消失。
缺點:只能設(shè)置有限的數(shù)量。
條件斷點
只有滿足設(shè)定條件時才會觸發(fā)的斷點(自己設(shè)置的邏輯表達(dá)式)。
條件記錄斷點
條件記錄斷點不僅具有條件斷點的功能,還可以記錄斷點處函數(shù)表達(dá)式或參數(shù)的值,還可以設(shè)置通過斷點的次數(shù)。每當(dāng)滿足暫停條件時,計數(shù)器就減1。
您可以有條件地在重復(fù)調(diào)用的函數(shù)段的開頭記錄斷點。過濾每個調(diào)用中傳遞的參數(shù),并在適當(dāng)?shù)臅r候斷開連接。
消息斷點
消息斷點是條件記錄斷點的應(yīng)用,是為一個特殊函數(shù):winproc函數(shù)的消息參數(shù)設(shè)置的記錄斷點。
Windows是一個基于消息的操作系統(tǒng)。每個消息都以相同的格式寫入一個結(jié)構(gòu)中。這種結(jié)構(gòu)叫做MSG。消息出現(xiàn)后,windows將該結(jié)構(gòu)傳遞給WinProc函數(shù),并使用它來執(zhí)行消息處理功能。
您可以在W窗口中為程序表單消息設(shè)置消息斷點。