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