成人免费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

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

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

程序員全棧工程師

2010-11-04 10:19:31

Chrome OS

2019-04-03 11:22:06

NginxApacheweb服務器

2022-08-24 13:25:20

微軟Python小白神器

2017-12-18 16:55:47

2020-03-05 10:28:19

MySQLMRR磁盤讀

2022-10-08 00:00:00

Spring數據庫項目

2020-10-14 06:22:14

UWB技術感知

2020-09-27 06:53:57

MavenCDNwrapper

2010-11-01 01:25:36

Windows NT

2020-09-22 08:22:28

快充

2018-03-08 10:35:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品视频一二三区 | 黄色网址在线免费观看 | 91热在线 | 夜夜骑首页 | 久久中文字幕视频 | 啪啪免费 | 亚洲成人一区二区 | 91精品国产综合久久久动漫日韩 | 国产精品国产三级国产播12软件 | 日韩精品极品视频在线观看免费 | 午夜一级黄色片 | 99视频在线免费观看 | 婷婷一级片 | 97人澡人人添人人爽欧美 | 亚洲高清在线免费观看 | 91久色| 欧美精品1区 | 亚洲 中文 欧美 日韩 在线观看 | 最新国产精品 | 91免费看片| 午夜在线免费观看 | 成人一区在线观看 | h片在线看| 久久国产精品免费一区二区三区 | 国产一区二区电影网 | 日韩精品一区二区三区在线播放 | 自拍偷拍视频网 | 成人精品在线观看 | 亚洲444kkkk在线观看最新 | av网站在线免费观看 | av激情影院 | 亚洲一区二区三区四区五区中文 | 国产一级黄色网 | 亚洲欧美一区二区三区国产精品 | www.三级 | 特级生活片 | 91福利网| www.成人免费视频 | 国产欧美精品一区二区 | 91精品国产91综合久久蜜臀 | 精品国产欧美一区二区三区成人 |