成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

傳說中的軟件斷點到底是什么?

商務辦公
不知道道友是否有這樣的經歷,代碼全速運行的時候,等了很久發現并沒有得到想要的結果,然后暫停之后發現程序死在了循環里面,或者斷言里面。

[[402868]]

本文轉載自微信公眾號「魚鷹談單片機」,作者魚鷹Osprey。轉載本文請聯系魚鷹談單片機公眾號。

不知道道友是否有這樣的經歷,代碼全速運行的時候,等了很久發現并沒有得到想要的結果,然后暫停之后發現程序死在了循環里面,或者斷言里面。

那么我們是否有辦法在程序斷言失敗的時候,讓程序自動停下來呢?而不是苦苦等待結果呢?

如果用常規的方法,肯定是在斷言里面加入斷點,只要斷言失敗,那么程序自然就停下來了。

但是我們知道,KEIL 加入斷點后有可能在再次打開工程后消失,而且STM32單片機支持的斷點數量也有限,有沒有好的方法?

有的,就是軟件斷點。

你可以在需要停止CPU運行的代碼中加入這條語句:

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

這樣,當你的程序斷言失敗了之后,如果運行到這條語句,在線調試模式下就會自動停止單片機運行(如果不在在線調試模式,也會進入停止運行,所以需要后面的優化方案)。

比如 hardfault 錯誤很難查,但是你可以在進入這個中斷后,立刻執行一條匯編軟件斷點代碼:

  1. BKPT  0 

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

  1. void HardFault_Handler(void) 
  2.     __breakpoint(0); 

這樣一來,一旦運行到這個函數,單片機就會馬上自動停止運行,而且你還可以通過 stack 窗口查看是從哪里跳進這個函數的,這樣就能快速定位這種錯誤了!

只有在滿足條件下,才會在你設置斷點位置自動停止在斷點處。比如一個條件下,會導致整個程序出問題,那么你可以在應用程序中添加代碼,讓其在滿足條件時自動停止運行(前提是處于在線調試,否則沒有任何打印信息的情況下停止運行是很麻煩的事情)。

但有的時候,我只想讓軟件斷點在進入調試模式時生效,正常運行時不產生軟件斷點,又該如何處理;換句話說,如何判斷單片機處于調試模式還是正常模式。

C 語言版

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

匯編版

  1. DEMCR          EQU     0xE000EDF0 
  2.  
  3.             LDR     r0, =DEMCR 
  4.             LDR     r0,[r0,#0x00] 
  5.             AND     r0,r0,#0x00000001 
  6.             CBZ     r0,no_debug 
  7.             BKPT    0 
  8. no_debug  ; 地址標簽 

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

 

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

 

責任編輯:武曉燕 來源: 魚鷹談單片機
相關推薦

2010-03-19 17:30:18

云計算

2018-03-13 07:17:39

網絡限速運營商網絡

2012-03-16 09:23:50

開源IDC

2012-03-16 09:57:29

開源

2017-04-12 14:18:29

北京政務云數據中心設計布局

2010-11-04 10:19:31

Chrome OS

2019-02-25 10:18:43

工具代碼測試

2013-07-16 10:03:45

移動市場移動觀察新機型

2017-03-02 12:18:22

5G運作基礎

2015-05-20 10:02:02

程序員全棧工程師

2019-04-03 11:22:06

NginxApacheweb服務器

2022-08-24 13:25:20

微軟Python小白神器

2017-12-18 16:55:47

2018-03-08 10:35:07

2022-10-08 00:00:00

Spring數據庫項目

2020-03-05 10:28:19

MySQLMRR磁盤讀

2011-04-27 09:30:48

企業架構

2020-12-31 11:55:56

PythonPlaywright微軟

2022-03-10 16:01:29

Playwright開源

2020-09-27 06:53:57

MavenCDNwrapper
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 青青草免费在线视频 | 亚洲最色视频 | 青青草原综合久久大伊人精品 | 国产午夜精品一区二区三区四区 | 黄色成人免费看 | 亚洲网站免费看 | 国产欧美日韩一区二区三区在线观看 | 国内精品久久久久久久影视简单 | 亚洲人成人一区二区在线观看 | 国产aⅴ爽av久久久久久久 | 精品人伦一区二区三区蜜桃网站 | 男女污污网站 | 91精品国产乱码久久久久久久久 | 91久久精品一区二区三区 | 国产精品久久久久久久久久不蜜臀 | 久久这里只有精品首页 | 欧美黄在线观看 | 久久久久久免费免费 | 成年人网站免费视频 | 日韩在线视频免费观看 | 狠狠影院| 91操操操| 欧美专区日韩专区 | 黄在线免费观看 | 国产一区免费 | 精品国产一区久久 | 成人在线中文字幕 | 国产亚洲一区二区三区在线 | 欧美国产日韩在线 | 久久人爽爽人爽爽 | 亚洲午夜精品久久久久久app | 欧美精三区欧美精三区 | 精品久久1| 盗摄精品av一区二区三区 | 日韩2020狼一二三 | 亚洲一区二区久久久 | 九九热精品视频 | 欧美日韩1区2区3区 欧美久久一区 | 欧美日韩在线一区二区三区 | www..com18午夜观看 | 羞羞视频在线观免费观看 |