1、 文檔目標(biāo)
了解不同情況下,設(shè)置的斷點(diǎn)的類型是什么。
2、 問題場(chǎng)景
在debug模式下,經(jīng)常通過斷點(diǎn)去調(diào)試代碼。但是對(duì)于斷點(diǎn)的類型不了解,不清楚斷點(diǎn)為什么會(huì)被進(jìn)入。不了解在不同語句或者情況下設(shè)置的斷點(diǎn)是否有不同。
3、軟硬件環(huán)境
1)軟件版本:MDK 5.38a
2)電腦環(huán)境:Windows 11
3)外設(shè)硬件:無
4、解決方法
斷點(diǎn)一共分為三種類型:Access Breakpoint(內(nèi)存訪問斷點(diǎn))、Execution Breakpoint(執(zhí)行斷點(diǎn))、Conditional Breakpoint(條件斷點(diǎn))。
1)Access Breakpoint(內(nèi)存訪問斷點(diǎn)):指定內(nèi)存訪問的模式(讀、寫、讀寫)。當(dāng)讀取、寫入或訪問特定地址時(shí),內(nèi)存訪問斷點(diǎn)暫停程序執(zhí)行或執(zhí)行命令。程序執(zhí)行速度不會(huì)受到顯著影響,因?yàn)橹挥性谥付ǖ脑L問事件發(fā)生時(shí)才會(huì)計(jì)算表達(dá)式。
2)Execution Breakpoint(執(zhí)行斷點(diǎn)):到達(dá)指定的代碼地址時(shí)觸發(fā)斷點(diǎn)。代碼地址必須指向CPU指令的第一個(gè)字節(jié)。
3)Conditional Breakpoint(條件斷點(diǎn)):在設(shè)置該類型的斷點(diǎn)的時(shí)候,需要設(shè)置一個(gè)條件表達(dá)式,當(dāng)條件表達(dá)式為真時(shí),斷點(diǎn)就會(huì)觸發(fā)。條件表達(dá)式在每條CPU指令執(zhí)行完畢后都會(huì)重新計(jì)算,這會(huì)大大降低程序的執(zhí)行速度。