99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

軟件斷點(diǎn)的介紹

嵌入式應(yīng)用開(kāi)發(fā) ? 來(lái)源:嵌入式應(yīng)用開(kāi)發(fā) ? 作者:嵌入式應(yīng)用開(kāi)發(fā) ? 2022-09-28 15:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

這樣,當(dāng)你的程序斷言失敗了之后,如果運(yùn)行到這條語(yǔ)句,在線調(diào)試模式下就會(huì)自動(dòng)停止單片機(jī)運(yùn)行(如果不在

在線調(diào)試

模式,也會(huì)進(jìn)入停止運(yùn)行,所以需要后面的優(yōu)化方案)。比如hardfault錯(cuò)誤很難查,但是你可以在進(jìn)入這個(gè)中斷后,立刻執(zhí)行一條匯編軟件斷點(diǎn)代碼:

BKPT  0

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

void HardFault_Handler(void)

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

調(diào)試模式

還是正常模式。

C語(yǔ)言版:

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

匯編版:

DEMCREQU0xE000EDF0

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

pYYBAGMz-6WASO45AACuCnchhY8694.png

注意:剛下載程序時(shí)判斷也會(huì)成立,必須斷開(kāi)調(diào)試器后再上電才可退出調(diào)試模式(或者其他方式退出調(diào)試模式)。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 軟件
    +關(guān)注

    關(guān)注

    69

    文章

    5155

    瀏覽量

    89248
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141874
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

    70801
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    介紹幾種判斷電線電纜斷點(diǎn)的檢測(cè)方法

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

    關(guān)于斷點(diǎn)的問(wèn)題

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

    cortex-m3軟件斷點(diǎn)/單步執(zhí)行的實(shí)現(xiàn)機(jī)制是什么?

    cortex-m3軟件斷點(diǎn)/單步執(zhí)行的實(shí)現(xiàn)機(jī)制是什么?
    發(fā)表于 01-26 07:22

    硬件斷點(diǎn)是什么?開(kāi)發(fā)環(huán)境中的斷點(diǎn)軟件斷點(diǎn)嗎?

    硬件斷點(diǎn)是什么?用途?開(kāi)發(fā)環(huán)境中的斷點(diǎn)軟件斷點(diǎn)嗎?
    發(fā)表于 10-18 06:19

    如何用縫衣針尋找導(dǎo)線斷點(diǎn)

    如何用縫衣針尋找導(dǎo)線斷點(diǎn)
    發(fā)表于 08-08 17:47 ?789次閱讀
    如何用縫衣針尋找導(dǎo)線<b class='flag-5'>斷點(diǎn)</b>

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

    【LabVIEW從入門到精通】2.4.2 VI調(diào)試(設(shè)置斷點(diǎn))
    發(fā)表于 01-08 15:44 ?0次下載

    python斷點(diǎn)調(diào)試方法

    本文主要介紹了python斷點(diǎn)調(diào)試方法,pdb 是 python 自帶的一個(gè)包,為 python 程序提供了一種交互的源代碼調(diào)試功能,主要特性包括設(shè)置斷點(diǎn)、單步調(diào)試、進(jìn)入函數(shù)調(diào)試、查看當(dāng)前代碼、查看棧片段、動(dòng)態(tài)改變變量的值等。
    發(fā)表于 01-14 10:44 ?7490次閱讀
    python<b class='flag-5'>斷點(diǎn)</b>調(diào)試方法

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

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

    Studio 6.2中數(shù)據(jù)斷點(diǎn)分析介紹

    Atmel 開(kāi)發(fā)軟件 Studio 最新版本6.2中包含的數(shù)據(jù)斷點(diǎn)工具簡(jiǎn)介
    的頭像 發(fā)表于 07-09 01:04 ?2948次閱讀

    介紹六種判定電纜斷點(diǎn)的方法

    當(dāng)電纜或電纜的內(nèi)部出現(xiàn)斷點(diǎn)故障時(shí),由于外部絕緣皮的包裹,很難直觀的判斷出斷點(diǎn)的確定位置。
    的頭像 發(fā)表于 12-04 14:57 ?6749次閱讀

    解決IAR不能設(shè)置斷點(diǎn)的問(wèn)題

    如何解決IAR不能設(shè)置斷點(diǎn)的問(wèn)題
    的頭像 發(fā)表于 03-20 10:03 ?1.4w次閱讀
    解決IAR不能設(shè)置<b class='flag-5'>斷點(diǎn)</b>的問(wèn)題

    cortex-m3軟件斷點(diǎn)/單步執(zhí)行的實(shí)現(xiàn)機(jī)制

    一.軟件斷點(diǎn)軟件斷點(diǎn)設(shè)置后,斷點(diǎn)處的代碼如果是存放在SRAM中,相應(yīng)的一條指令(C語(yǔ)言中的一行代碼可能對(duì)應(yīng)多條處理器指令)會(huì)被調(diào)試器(deb
    發(fā)表于 12-01 12:51 ?6次下載
    cortex-m3<b class='flag-5'>軟件</b><b class='flag-5'>斷點(diǎn)</b>/單步執(zhí)行的實(shí)現(xiàn)機(jī)制

    Segger的無(wú)限Flash斷點(diǎn)調(diào)試功能

    J-Link支持一項(xiàng)名為“無(wú)限Flash斷點(diǎn)”(Unlimited Flash Breakpoints)的調(diào)試功能?!盁o(wú)限Flash斷點(diǎn)”允許用戶在Flash中調(diào)試時(shí)設(shè)置無(wú)限數(shù)量的斷點(diǎn)。如果沒(méi)有此功能,在Flash中能夠設(shè)置的
    的頭像 發(fā)表于 05-07 09:54 ?2496次閱讀

    硬件斷點(diǎn)軟件斷點(diǎn)是什么

    在調(diào)試程序時(shí),可以通過(guò)斷點(diǎn)(Breakpoint)設(shè)置使程序暫停執(zhí)行的條件標(biāo)準(zhǔn)。當(dāng)特定的條件標(biāo)準(zhǔn)滿足時(shí),會(huì)暫停程序執(zhí)行。 斷點(diǎn)可分為兩大類:硬件斷點(diǎn)軟件
    的頭像 發(fā)表于 01-22 17:42 ?3689次閱讀
    硬件<b class='flag-5'>斷點(diǎn)</b>和<b class='flag-5'>軟件</b><b class='flag-5'>斷點(diǎn)</b>是什么

    GDB調(diào)試?yán)镌趺丛O(shè)置斷點(diǎn)

    本篇講解使用GDB調(diào)試Linux應(yīng)用程序,以下以 hellowld.c 為例介紹 GDB 的調(diào)試入門: 設(shè)置斷點(diǎn) ??disable?????????????????#?禁用所有斷點(diǎn)
    的頭像 發(fā)表于 10-04 16:10 ?1546次閱讀