在線調試程序時,打斷點是非常有效的一種方式,配合單步調試,可以快速定位問題。但有的時候,手動打斷點用起來不是那么方便。 比如,想要在一個循環的第N次停下來,如果手動打斷點,那就要不停的點擊單步運行,直到循環運行到第N次。 再比如,程序運行過程中變量不知何時被改變了,又不好定位,手動打斷點就不知打在哪里。這時就要用到一些斷點的高級用法。
1、設置斷點的運行次數
以下面程序為例,在循環的第十次將程序停止。首先在循環中手動打一個斷點:
點擊Debug菜單,選擇BreakPoints:
彈出下面菜單:
最上面的斷點是手動打的,雙擊該斷點,會看到Expression會顯示該斷點的信息,修改Count的值為10,點擊Define,然后關閉該窗口。這里說明一下:Expression為表達式,即斷點的條件,可以看到,手動設置的斷點結尾為123,表示在main.c文件的123行。這里支持基本的>、<、==、!=等操作符。Count為次數,表示運行多少次中斷一次,手動設置的斷點Count都是1。Command為命令,表示到達該斷點時執行的命令,默認為空。 按照上面的設置,運行程序。可以看到,程序運行到斷點時沒有馬上停下,而是在第10次才停下來: ?
2、變量匹配斷點
將變量添加到Watch窗口,右擊選擇Set Access BreakPoint at xxx。還是彈出剛才的菜單:
勾選Access方式Read或Write,設置Count值,點擊Define。這里選擇Write,Count值為4,表示該變量第四次被寫入時程序會停止。
3、變量條件匹配斷點
跟上一步一樣,在Watch窗口,右擊變量選擇Set Access BreakPoint at xxx。勾選Access方式Read或Write,刪除Expression下原來的內容,填寫表達式“AD== 10”。點擊Define。這樣當AD==10時程序會停止。
4、打印信息
選擇一個手動打好的斷點,然后在Command下填寫printf(),則在運行到斷點處時,程序不會停止,而是在Command窗口打印設置的信息。
5、條件匹配打印信息
還可以將3和4組合使用,如下:
則AD==10時,程序不中斷,在Command窗口打印信息。 斷點的高級用法還有很多種,不同的表達式,不同的指令等,具體可查閱Keil的使用幫助文檔。
END
審核編輯 :李倩
-
keil
+關注
關注
69文章
1223瀏覽量
169013 -
變量
+關注
關注
0文章
614瀏覽量
28822 -
斷點
+關注
關注
0文章
12瀏覽量
7876
原文標題:Keil調試時設置斷點的高級用法
文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
邊緣計算網關支持斷點續傳嗎
Keil C51與Proteus聯調,為何在Keil中設置的斷點失效?
STM32CubeIDE編譯設置是否有像keil一樣有編譯后執行Bat腳本的功能和設置?
HarmonyOS NEXT 原生應用/元服務-ArkTS代碼調試使用斷點
hyper 網絡設置,Hyper-V網絡設置:高級網絡配置技巧

hyper-v 配置,Hyper-V配置:性能優化與高級設置

keil在Debug的高級用法

評論