在線調(diào)試程序時,打斷點(diǎn)是非常有效的一種方式,配合單步調(diào)試,可以快速定位問題。但有的時候,手動打斷點(diǎn)用起來不是那么方便。
比如,想要在一個循環(huán)的第N次停下來,如果手動打斷點(diǎn),那就要不停的點(diǎn)擊單步運(yùn)行,直到循環(huán)運(yùn)行到第N次。
再比如,程序運(yùn)行過程中變量不知何時被改變了,又不好定位,手動打斷點(diǎn)就不知打在哪里。這時就要用到一些斷點(diǎn)的高級用法。
1、設(shè)置斷點(diǎn)的運(yùn)行次數(shù)
以下面程序?yàn)槔?,在循環(huán)的第十次將程序停止。首先在循環(huán)中手動打一個斷點(diǎn):
點(diǎn)擊Debug菜單,選擇BreakPoints:
彈出下面菜單:
最上面的斷點(diǎn)是手動打的,雙擊該斷點(diǎn),會看到Expression會顯示該斷點(diǎn)的信息,修改Count的值為10,點(diǎn)擊Define,然后關(guān)閉該窗口。這里說明一下:
Expression為表達(dá)式,即斷點(diǎn)的條件,可以看到,手動設(shè)置的斷點(diǎn)結(jié)尾為123,表示在main.c文件的123行。這里支持基本的>、<、==、!=等操作符。
Count為次數(shù),表示運(yùn)行多少次中斷一次,手動設(shè)置的斷點(diǎn)Count都是1。
Command為命令,表示到達(dá)該斷點(diǎn)時執(zhí)行的命令,默認(rèn)為空。
按照上面的設(shè)置,運(yùn)行程序??梢钥吹?,程序運(yùn)行到斷點(diǎn)時沒有馬上停下,而是在第10次才停下來:
2、變量匹配斷點(diǎn)
將變量添加到Watch窗口,右擊選擇Set Access BreakPoint at xxx。還是彈出剛才的菜單:
勾選Access方式Read或Write,設(shè)置Count值,點(diǎn)擊Define。這里選擇Write,Count值為4,表示該變量第四次被寫入時程序會停止。
3、變量條件匹配斷點(diǎn)
跟上一步一樣,在Watch窗口,右擊變量選擇Set Access BreakPoint at xxx。勾選Access方式Read或Write,刪除Expression下原來的內(nèi)容,填寫表達(dá)式“AD== 10”。點(diǎn)擊Define。這樣當(dāng)AD==10時程序會停止。
4、打印信息
選擇一個手動打好的斷點(diǎn),然后在Command下填寫printf(),則在運(yùn)行到斷點(diǎn)處時,程序不會停止,而是在Command窗口打印設(shè)置的信息。
5、條件匹配打印信息
還可以將3和4組合使用,如下:
則AD==10時,程序不中斷,在Command窗口打印信息。 斷點(diǎn)的高級用法還有很多種,不同的表達(dá)式,不同的指令等,具體可查閱Keil的使用幫助文檔。
審核編輯:湯梓紅
-
調(diào)試
+關(guān)注
關(guān)注
7文章
612瀏覽量
34663 -
程序
+關(guān)注
關(guān)注
117文章
3826瀏覽量
82807 -
keil
+關(guān)注
關(guān)注
69文章
1223瀏覽量
169461 -
斷點(diǎn)
+關(guān)注
關(guān)注
0文章
12瀏覽量
7901 -
Watch
+關(guān)注
關(guān)注
0文章
111瀏覽量
15563
原文標(biāo)題:Keil調(diào)試時,設(shè)置斷點(diǎn)的高級用法
文章出處:【微信號:玩點(diǎn)嵌入式,微信公眾號:玩點(diǎn)嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
KEIL斷點(diǎn)調(diào)試窗口的常規(guī)用法有哪些
keil在線調(diào)試無法設(shè)置斷點(diǎn)怎么解決?
基于Keil的入門實(shí)例教程
Keil的調(diào)試命令,在線匯編與斷點(diǎn)設(shè)置
Keil的調(diào)試命令、在線匯編與斷點(diǎn)設(shè)置

VI調(diào)試(設(shè)置斷點(diǎn))
python斷點(diǎn)調(diào)試方法

python程序調(diào)試中設(shè)置條件斷點(diǎn)

Keil軟件實(shí)驗(yàn)教程之Keil的調(diào)試命令和在線匯編與斷點(diǎn)設(shè)置

評論