那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

軟件斷點的介紹

嵌入式應用開發 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-09-28 15:46 ? 次閱讀

代碼全速運行的時候,等了很久發現并沒有得到想要的結果,然后暫停之后發現程序死在了循環里面,或者斷言里面。那么,我們是否有辦法在程序斷言失敗的時候,讓程序自動停下來呢?而不是苦苦等待結果呢?如果用常規的方法,肯定是在斷言里面加入斷點,只要斷言失敗,那么程序自然就停下來了。但是我們知道,KEIL加入斷點后有可能在再次打開工程后消失,而且STM32單片機支持的斷點數量也有限,有沒有好的方法?有的,就是軟件斷點!你可以在需要停止CPU運行的代碼中加入這條語句:

__breakpoint(0);  //后面的立即數不怎么重要

這樣,當你的程序斷言失敗了之后,如果運行到這條語句,在線調試模式下就會自動停止單片機運行(如果不在

在線調試

模式,也會進入停止運行,所以需要后面的優化方案)。比如hardfault錯誤很難查,但是你可以在進入這個中斷后,立刻執行一條匯編軟件斷點代碼:

BKPT  0

或者直接在中斷處理函數中加入代碼:

void HardFault_Handler(void)

這樣一來,一旦運行到這個函數,單片機就會馬上自動停止運行,而且你還可以通過stack窗口查看是從哪里跳進這個函數的,這樣就能快速定位這種錯誤了!只有在滿足條件下,才會在你設置斷點位置自動停止在斷點處。比如一個條件下,會導致整個程序出問題,那么你可以在應用程序中添加代碼,讓其在滿足條件時自動停止運行(前提是處于在線調試,否則沒有任何打印信息的情況下停止運行是很麻煩的事情)。但有的時候,我只想讓軟件斷點在進入調試模式時生效,正常運行時不產生軟件斷點,又該如何處理;換句話說,如何判斷單片機處于

調試模式

還是正常模式。

C語言版:

if(*((uint32_t*)0xE000EDF0)&0x00000001)//判斷是否工作在調試模式

匯編版:

DEMCREQU0xE000EDF0

適用于 STM32f1x or Cortex-M3/M4平臺,其他平臺自行研究。

pYYBAGMz-6WASO45AACuCnchhY8694.png

注意:下載程序時判斷也會成立,必須斷開調試器后再上電才可退出調試模式(或者其他方式退出調試模式)。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件
    +關注

    關注

    69

    文章

    5013

    瀏覽量

    88085
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137739
  • 代碼
    +關注

    關注

    30

    文章

    4828

    瀏覽量

    69063
收藏 人收藏

    評論

    相關推薦

    介紹幾種判斷電線電纜斷點的檢測方法

    當電線電纜的內部出現斷線故障時,由于外部絕緣皮的包裹,使斷線的確切位置不易確定,測試電線電纜斷點 我們需要找出有斷點的一根電線,然后就可以找到確切的斷點了。
    的頭像 發表于 11-20 11:07 ?3950次閱讀
    <b class='flag-5'>介紹</b>幾種判斷電線電纜<b class='flag-5'>斷點</b>的檢測方法

    關于斷點的問題

    在CCS5中,如何設置斷點,還有斷點列表的使用是如何的,硬件斷點軟件斷點的使用不同之處是什么?
    發表于 06-21 04:24

    cortex-m3軟件斷點/單步執行的實現機制是什么?

    cortex-m3軟件斷點/單步執行的實現機制是什么?
    發表于 01-26 07:22

    硬件斷點是什么?開發環境中的斷點軟件斷點嗎?

    硬件斷點是什么?用途?開發環境中的斷點軟件斷點嗎?
    發表于 10-18 06:19

    如何用縫衣針尋找導線斷點

    如何用縫衣針尋找導線斷點
    發表于 08-08 17:47 ?770次閱讀
    如何用縫衣針尋找導線<b class='flag-5'>斷點</b>

    VI調試(設置斷點)

    【LabVIEW從入門到精通】2.4.2 VI調試(設置斷點)
    發表于 01-08 15:44 ?0次下載

    python斷點調試方法

    本文主要介紹了python斷點調試方法,pdb 是 python 自帶的一個包,為 python 程序提供了一種交互的源代碼調試功能,主要特性包括設置斷點、單步調試、進入函數調試、查看當前代碼、查看棧片段、動態改變變量的值等。
    發表于 01-14 10:44 ?7324次閱讀
    python<b class='flag-5'>斷點</b>調試方法

    python程序調試中設置條件斷點

    本文主要介紹了python程序調試中設置條件斷點。實際開發中,調試代碼通常要花費比新編寫代碼更多的時間,選擇合理的調試方法和工具對于程序工作者來說很重要,一種更便捷更直觀的方式就是使用斷點調試。下文對此做了具體的分析供參考。
    發表于 01-14 11:39 ?6437次閱讀
    python程序調試中設置條件<b class='flag-5'>斷點</b>

    Studio 6.2中數據斷點分析介紹

    Atmel 開發軟件 Studio 最新版本6.2中包含的數據斷點工具簡介
    的頭像 發表于 07-09 01:04 ?2721次閱讀

    介紹六種判定電纜斷點的方法

    當電纜或電纜的內部出現斷點故障時,由于外部絕緣皮的包裹,很難直觀的判斷出斷點的確定位置。
    的頭像 發表于 12-04 14:57 ?6466次閱讀

    解決IAR不能設置斷點的問題

    如何解決IAR不能設置斷點的問題
    的頭像 發表于 03-20 10:03 ?1.3w次閱讀
    解決IAR不能設置<b class='flag-5'>斷點</b>的問題

    cortex-m3軟件斷點/單步執行的實現機制

    一.軟件斷點軟件斷點設置后,斷點處的代碼如果是存放在SRAM中,相應的一條指令(C語言中的一行代碼可能對應多條處理器指令)會被調試器(deb
    發表于 12-01 12:51 ?6次下載
    cortex-m3<b class='flag-5'>軟件</b><b class='flag-5'>斷點</b>/單步執行的實現機制

    Segger的無限Flash斷點調試功能

    J-Link支持一項名為“無限Flash斷點”(Unlimited Flash Breakpoints)的調試功能。“無限Flash斷點”允許用戶在Flash中調試時設置無限數量的斷點。如果沒有此功能,在Flash中能夠設置的
    的頭像 發表于 05-07 09:54 ?2140次閱讀

    硬件斷點軟件斷點是什么

    在調試程序時,可以通過斷點(Breakpoint)設置使程序暫停執行的條件標準。當特定的條件標準滿足時,會暫停程序執行。 斷點可分為兩大類:硬件斷點軟件
    的頭像 發表于 01-22 17:42 ?3221次閱讀
    硬件<b class='flag-5'>斷點</b>和<b class='flag-5'>軟件</b><b class='flag-5'>斷點</b>是什么

    GDB調試里怎么設置斷點

    本篇講解使用GDB調試Linux應用程序,以下以 hellowld.c 為例介紹 GDB 的調試入門: 設置斷點 ??disable?????????????????#?禁用所有斷點
    的頭像 發表于 10-04 16:10 ?1269次閱讀
    百家乐官网赌博机吧| 网上百家乐官网娱乐场开户注册 | 七胜百家乐赌场娱乐网规则| 香港六合彩特码开奖结果| 百家乐官网娱乐网送68元| 迪威百家乐娱乐平台| 新化县| 适合做生意的开运方法| 百家乐用什么平台| 智尊国际娱乐| 百家乐官网博彩吧| 娱乐城网址| 百家乐官网加牌规| 大发888新老虎机| 百家乐官网公式书| 百家乐好不好| 百家乐官网网投注| 鼎尚百家乐的玩法技巧和规则 | 澳门百家乐官网必胜看| 威尼斯人娱乐网网上百家乐的玩法技巧和规则 | 君怡百家乐的玩法技巧和规则| 百家乐官网娱乐城体育| 澳门百家乐怎么| 彩票| 百家乐23珠路打法| 投注网| 百家乐2珠路投注法| 年辖:市辖区| 百家乐赌场策略大全| 百家乐官网推荐怎么看| 长沙百家乐的玩法技巧和规则| 百家乐官网已破解的书籍| 在线玩百家乐的玩法技巧和规则 | 百家乐破解的方法| 百家乐官网美女视频| 百家乐正品地址| 百家乐官网投注平台导航网| 威尼斯人娱乐城--老品牌值得您信赖| 百家乐官网投住系统| 大发888娱乐城 建账号| tt百家乐官网的玩法技巧和规则|