日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

调试笔记--keil 断点调试小技巧

發(fā)布時(shí)間:2025/4/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 调试笔记--keil 断点调试小技巧 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

調(diào)試筆記–keil 斷點(diǎn)調(diào)試小技巧

給變量打斷點(diǎn)

調(diào)試不熟悉的項(xiàng)目時(shí),臥槽!怎么這么多全局變量?這玩意又在那修改了??這個(gè)時(shí)候會(huì)給變量打斷點(diǎn)就能省好多事。

  • 將要監(jiān)視的全局變量添加到watch窗口
  • 選中要監(jiān)視的全局變量,右鍵設(shè)置斷點(diǎn)
  • 設(shè)置斷點(diǎn)條件
  • Expression: 設(shè)置斷點(diǎn)條件, 表達(dá)式可以使用 == > < ! ,當(dāng)條件為真時(shí), Count 減一
    Count:設(shè)置次數(shù),當(dāng) Expression 為真 Count 減一,當(dāng)Count為0時(shí)觸發(fā)斷點(diǎn)效果
    Access:何時(shí)去判斷表達(dá)式 Expression,如果勾選Read,則讀變量時(shí)就會(huì)去判斷表達(dá)式Expression,同理,勾選Write后,每當(dāng)寫變量時(shí)就回去判斷表達(dá)式
    Size、Bytes、Objects一般默認(rèn)即可。
    設(shè)置完后按Define即可設(shè)置斷點(diǎn)。


    4. 刪除斷點(diǎn)

    打開debug菜單下的Breakpoints選項(xiàng)

    選中要?jiǎng)h除的斷點(diǎn), 點(diǎn)擊Kill Selected

    例子

    當(dāng)寫入xiaoMing.age變量10次后觸發(fā)斷點(diǎn)

    當(dāng)變量 xiaoMing.age 等于 10時(shí),觸發(fā)斷點(diǎn)

    注意事項(xiàng)

  • 給變量打斷點(diǎn)的前提是,這個(gè)是全局變量
  • 打斷點(diǎn)其實(shí)就是DEBUG模塊檢測(cè)固定RAM地址,當(dāng)有指令用的預(yù)定的RAM地址,將指令進(jìn)行替換,局部變量存放在棧中,地址不固定因此不能這樣操作。全局靜態(tài)變量的作用域只是當(dāng)前文件內(nèi)可訪問,因此如果強(qiáng)行使用可能導(dǎo)致結(jié)果不確定(有可能按照預(yù)期斷點(diǎn)停止,也有可能不會(huì))

    既然原理是檢測(cè)固定RAM地址,那么直接從Menory找到對(duì)應(yīng)地址設(shè)置斷點(diǎn)也是一樣可行的

  • 不可修改
  • 斷點(diǎn)設(shè)定好后,如下圖,想要修改成只在寫入時(shí)檢測(cè),即去掉Read的勾選,需要將改斷點(diǎn)刪除然后重新設(shè)置一個(gè),不能在原來的上面進(jìn)行修改。

  • 遇到如下錯(cuò)誤,一般是當(dāng)前變量已經(jīng)設(shè)置了斷點(diǎn),有些表達(dá)式不能重復(fù)設(shè)置斷點(diǎn),入下圖的==
  • 斷點(diǎn)數(shù)量
  • 斷點(diǎn)分為軟件斷點(diǎn)和硬件斷點(diǎn),硬件斷點(diǎn)數(shù)量由單片機(jī)內(nèi)部硬件決定,實(shí)測(cè)M3、M4、M7內(nèi)核是8個(gè)硬件斷點(diǎn),軟件斷點(diǎn)是調(diào)試器根據(jù)一定算法,動(dòng)態(tài)的設(shè)置硬件斷點(diǎn),或者在調(diào)試過程中動(dòng)態(tài)修改FLASH,達(dá)到斷點(diǎn)數(shù)量無限制效果。

    • 手頭有個(gè)CMSIS-DAP(第一代DAP)實(shí)測(cè)不支持軟件斷點(diǎn),只由硬件按斷點(diǎn),當(dāng)斷點(diǎn)超出后MDK會(huì)給出提示

    CMSIS-DAP 實(shí)在是需要軟件斷點(diǎn),可以手動(dòng)在需要加斷點(diǎn)的代碼前加上 __asm(“BKPT 0”); 可以無限個(gè),但是在正式代碼中一定記得剔除

    • jlinkV9 支持軟件斷點(diǎn),但是軟件斷點(diǎn)可能會(huì)動(dòng)態(tài)修改flash內(nèi)容(本質(zhì)也是添加 __asm(“BKPT 0”); 語句,只是由jlink自動(dòng)添加)

    MDK5斷點(diǎn)調(diào)試,有時(shí)候斷點(diǎn)亂跳,就有可能是用jlink調(diào)試 斷點(diǎn)設(shè)置多了,jlink會(huì)修改flash內(nèi)容,這個(gè)時(shí)候如果直接拔掉jlink,flash中就會(huì)保存斷點(diǎn)信息,會(huì)影響正常運(yùn)行而且下次調(diào)試時(shí)如果沒有更新程序,mdk里面不會(huì)顯示該斷點(diǎn),但是斷點(diǎn)信息已經(jīng)在flash中了,執(zhí)行到對(duì)應(yīng)語句依然會(huì)暫停

    缺點(diǎn)

    需要實(shí)時(shí)監(jiān)聽RAM,所以調(diào)試時(shí)運(yùn)行速度慢,不適合和實(shí)時(shí)性要求較高的外圍模塊一起聯(lián)調(diào)

    總結(jié)

    以上是生活随笔為你收集整理的调试笔记--keil 断点调试小技巧的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。