在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

IAR支持的斷點類型和使用方法

TopSemic嵌入式 ? 來源:大寧筆記不重名 ? 作者:Const Yu ? 2021-11-21 09:57 ? 次閱讀

1. 前言

2. 常用斷點存在的問題

3. IAR支持的斷點類型和使用方法

3.1. 代碼斷點

3.2 條件代碼斷點

3.3 讀寫訪問的數(shù)據(jù)斷點

3.4 數(shù)據(jù)日志斷點

3.5 日志斷點

3.6 電源斷點

4. 總結(jié):

5. 經(jīng)驗交流:

1. 前言在產(chǎn)品開發(fā)中,調(diào)試工具是不可或缺的開發(fā)利器,除了日常常見的ARM的CMSIS-DAP/ULINK,IAR的I-JET,P&E的U-multilink/Cyclone, 各個半導體廠商自定義的XX-LINK(例如LPC-link, ST-Link,等)之外,還有兩個是神一樣的存在,一個是SEGGER的J-LINK,支持與IAR/KEIL等各種編譯環(huán)境無縫銜接,性能穩(wěn)如老狗, 價格低廉, 所以在嵌入式工程師中的普及率非常高,被稱為居家旅行匱贈好友之佳品。另外一個是一聽名字就感覺高大上的勞特巴赫Lauterbach,作為專業(yè)第三方調(diào)試工具廠商,以其強大的TRACE32開發(fā)調(diào)試工具享譽全球,TRACE32開發(fā)工具擁有非常豐富和強大的功能,包括基本調(diào)試配置、RTOS、多核系統(tǒng)、虛擬目標調(diào)試、能耗分析以及強大的腳本語言等,而且可以支持市場中使用的80多種常見的微處理架構(gòu)。

當然Lauterbach性能的強大,對應的代價就是價格也比JLINK多出一個數(shù)量級,但是對于大部分嵌入式開發(fā)者來說,最常用的還是基本的調(diào)試功能,包括斷點,寄存器查看,內(nèi)存/Flash的查看,本文從斷點使用的角度講解如何使用JLINK配合IAR支持的各種斷點用出點勞德巴赫的一些強大功能。

2. 常用斷點存在的問題斷點的概念非常簡單,目的簡單來說就是在指定指令或者代碼行中斷程序的執(zhí)行,實現(xiàn)上可以是硬件斷點(通過編程FPB實現(xiàn))也可以是軟件斷點(通過插入BKPT斷點指令實現(xiàn) ),具體二者的底層實現(xiàn)這里不展開討論。常規(guī)的斷點調(diào)試(本質(zhì)上是代碼斷點)是在想觀察哪里的問題時就在對應的代碼地址雙擊設置斷點,并且一旦運行到斷點位置會讓程序自動暫停運行,然后觀察感興趣的變量,內(nèi)存或者寄存器,這種斷點調(diào)試功能能幫助開發(fā)者解決大部分的問題,但是其也有很大的局限性。

因為很多時候我們只想知道某段代碼是否運行過,而不能讓程序停下來,譬如說調(diào)試BLE協(xié)議棧,無法去單步運行,否則會打斷BLE主機和從機之間的通訊時序,而導致整個系統(tǒng)功能出現(xiàn)問題。還有中斷處理函數(shù)的調(diào)試,程序一旦停下了也就失去了其他所有中斷的后續(xù)響應,再比如兩個設備通信,一旦一方采用常規(guī)斷點的方式調(diào)試,可能會打斷正常的通信過程。所以通常的做法是添加串口打印或者ITM半主機打印輸出log信息到顯示屏,但是這種方式會帶來額外的軟硬件開銷(對于串口打印來說是兩個UART pin腳+UART驅(qū)動函數(shù),對于ITM打印輸出是一個SWO+ITM驅(qū)動),甚至因為引入新的代碼導致程序出錯。除此之外,還有3種場景是這種普通斷點無法滿足的,第一個是同一段循環(huán)體運行N次才停下來,第二個是當變量被寫入新的數(shù)據(jù)或者被讀取時停下來,第三個是實時記錄斷點所在行某個特定變量或者地址的值,并在時間軸上以圖形的形式顯示出來,方便分析和對比。

以上這些功能在這些功能在勞德巴赫中是最基本功能,同樣在IAR中也提供了不同形式的斷點類型和組合,只是日常習慣了只用了其代碼斷點的功能,沒能充分發(fā)揮IAR的強大斷點功能,針對以上4種問題在IAR中可以分別用日志斷點、條件斷點、讀寫權(quán)限的數(shù)據(jù)斷點、數(shù)據(jù)日志斷點逐個擊破,從而避免了額外添加代碼的繁瑣,也能為解決隱藏bug提供更加靈活的手段。尤其是其中的讀寫權(quán)限的數(shù)據(jù)斷點,筆者曾經(jīng)就是使用這種辦法幫客戶解決了兩個埋藏的很深大bug,其中一個是查找某個關鍵變量在哪里被意外修改,通過設置條件斷點+stack callback迅速定位到了肇事代碼段,另一種是客戶代碼意外堆棧溢出調(diào)查,當時的做法是在堆棧大小的90%地址靠近棧頂處設置一個寫觸發(fā)的數(shù)據(jù)斷點,當某層調(diào)用過程中堆棧接近溢出時,設置的數(shù)據(jù)斷點會被觸發(fā)而停止應用程序,從而迅速找到堆棧是在哪層調(diào)用溢出的,從而解決問題。

3. IAR支持的斷點類型和使用方法總結(jié)下來,在 IAR 中,主要有以下幾種斷點,下面逐一介紹。

代碼斷點

條件斷點

讀寫訪問權(quán)限的數(shù)據(jù)斷點

數(shù)據(jù)日志斷點

日志斷點

電源斷點

3.1. 代碼斷點

這種斷點就是前面提到的最常用的斷點,也是最簡單的斷點。開發(fā)則只需要在反匯編窗口中選擇C行或ASM指令并切換斷點。一旦遇到斷點,用戶應用程序?qū)⑼V埂_@時候可以查看變量、標志和寄存器的值。換句話說,開發(fā)者擁有完全的控制權(quán)。對于這種普通代碼斷點,其數(shù)量受限于硬件斷點的數(shù)量,例如對于 Arm Cortex-M,通常有6-8個硬件斷點,但如果使用軟件斷點或在RAM中運行應用程序,則可以不受限制。使用時只需選擇顯示View -》 Breakpoints 窗口,就可以啟用或禁用斷點。

默認情況下,IDE 將設置代碼斷點,而且是auto類型,可以通過Option-》Debugger-》JLINK/JTrace-》Breakpoint去設置硬件斷點還是軟件斷點。如果開發(fā)者有 I-jet,可以在右鍵單擊代碼行時明確選擇一個 flash斷點。注意斷點符號中的“F”。Flash 斷點功能在適用于 Arm 的IAR7.60 或更高版本中可用。

3.2 條件代碼斷點

條件斷點是代碼斷點與某些標志或變量作為條件的組合。設置斷點后,同樣可以再次使用View -》 Breakpoints 窗口查看所有斷點,也可以通過右鍵單擊并選擇Edit option來設置額外參數(shù)。

設置斷點條件所使用的語法類似于C語法,可以使用 ==、》= 和 《=。例如,如果您希望應用程序在計數(shù)器等于 10 時在斷點處停止,您可以使用“counter==10”。這在中斷例程中需要斷點時非常有用。如果沒有設置條件,應用程序就會一直被停止,影響到系統(tǒng)的正常工作,使用標志或變量作為條件使事情變得容易得多。甚至用戶還可以使用跳過計數(shù)器和條件檢查(如true或changed)來實現(xiàn)更復雜的斷點停止條件設置。該方法可以解決上面提到的第二種問題。

3.3 讀寫訪問的數(shù)據(jù)斷點

與其他斷點相比,數(shù)據(jù)斷點有點不同,因為是對特定內(nèi)存地址、標志、變量或寄存器的讀寫訪問的監(jiān)控。使用時只需右鍵單擊標志或變量并選擇選項Set data Breakpoint。默認情況下,對該變量,特定地址,寄存器的任何讀取和寫入訪問都會觸發(fā)斷點。如果你想添加額外的設置,你可以通過View-》Breakpoints 窗口和Edit 選項來完成。 除了讀寫訪問之外,還可以監(jiān)控數(shù)據(jù)是否匹配來作為斷點的觸發(fā)條件,這意味著寫或讀訪問只會在數(shù)據(jù)匹配時觸發(fā)暫停。另外,通過選擇編輯按鈕,開發(fā)者還可以打開一個額外的窗口,可以選擇絕對地址甚至源代碼所在行。對于變量或標志,建議使用自動大小。如果需要監(jiān)控更大的范圍,則應手動設置監(jiān)控的地址范圍或者變量范圍,譬如說監(jiān)控一個結(jié)構(gòu)體的數(shù)據(jù)變化,使用這種數(shù)據(jù)斷點也是可以實現(xiàn)的,但需要用戶正確設置變量,特定地址,寄存器等監(jiān)控對象的Size。使用這種方法可以解決前文提到的第三種問題。

此處需要特別提一下,數(shù)據(jù)斷點對于調(diào)試被應用程序破壞的標志和變量非常有用。筆者曾經(jīng)就是使用這種辦法在客戶解決了兩個埋藏的很深大bug,其中一個是查找某個關鍵變量在哪里被意外修改,通過設置條件斷點+stack callback迅速定位到了肇事代碼段,另一種是客戶端的意外堆棧溢出調(diào)查,當時的做法是在堆棧大小的90%地址靠近棧頂處設置一個數(shù)據(jù)斷點,當堆棧溢出接近時,設置的數(shù)據(jù)斷點會被觸發(fā)而停止應用程序,從而迅速找到問題的根源,至于如何設置,此處暫不展開。

3.4 數(shù)據(jù)日志斷點

除了具有讀寫訪問權(quán)限的數(shù)據(jù)斷點外,開發(fā)者還可以使用數(shù)據(jù)日志斷點。這種斷點的好處在于可以在時間線中監(jiān)視和以圖形方式繪制內(nèi)存中特定變量或地址的值,使顯示更加直觀,用戶還可以在同一個時間軸上顯示和比較兩個或多個變量,從而在邏輯上排查問題。設置的方法就是View-》Breakpoints 窗口和Edit 選項,然后選擇set Data Log Breakpoint for counter即可,使用這種方法可以解決前文提到的第四種問題。

時間線以及附加數(shù)據(jù)日志和數(shù)據(jù)日志摘要可在探針選項下找到,例如如下面的屏幕截圖所示。

3.5 日志斷點

除了代碼和數(shù)據(jù)斷點之外,還有一種日志斷點,這是一個特殊的斷點,因為它只會臨時暫時停止應用程序以打印消息,然后繼續(xù)代碼的運行。一旦運行到設置的日志斷點,它會顯示如下用戶預先設定的消息,告知用戶某個函數(shù)事件被觸發(fā)。這種方式的好處在于,無需額外添加串口打印或者ITM半主機打印輸出log信息到顯示屏,無需額外的軟硬件開銷,便可實現(xiàn)基本的信息打印,方便開發(fā)者跟蹤程序的執(zhí)行流程。

如下圖所示,每次斷點命中時,調(diào)試日志窗口中都會顯示一條消息。添加的計數(shù)器可以了解應用程序通過該部分源代碼的次數(shù)。通過這種辦法可以解決前面提到的第一個問題,即不停止代碼又能獲知感興趣的代碼段是否被執(zhí)行過,以及執(zhí)行的次數(shù),兵不血刃,無需添加任何額外的代碼。

3.6 電源斷點

除了代碼的調(diào)試,IAR還支持先進的電源調(diào)試技術,可以監(jiān)控功耗,并將其與源代碼相關聯(lián)。這也使得添加電源斷點成為可能,可以設置一個閾值,如 25mA,一旦能量高于該值,調(diào)試器將被觸發(fā)停止。設置閾值非常簡單, 只需要打開J-Link-》PowerLog 窗口,然后設置值和所需選項,如上圖或下圖所示。通過這種分析,可以直觀的看出代碼執(zhí)行過程中的功耗值,下面的時間線窗口不是必需的,但它可以為提供正在使用的能量提供一個時間參考。

4. 總結(jié):至此,介紹完了IAR支持的6種不同的斷點類型和使用方法,也順帶針對性的解決了前文中提到的日常調(diào)試遇到的四個問題。如果在日常調(diào)試過程中靈活運用以上的這幾種斷點,對于日常調(diào)試提高開發(fā)速度和解決一些深藏的bug(例如前文提到的大型程序中變量被莫名修改,堆棧溢出追蹤等) 很有幫助。當然勞特巴赫之所以賣的這么貴,必然有其強大之處,尤其是強大的腳本編程,多核系統(tǒng),能耗分析以及對芯片內(nèi)部操作的開放度,能給開發(fā)者最大的操作靈活度。但就日常的斷點調(diào)試看,IAR+JLINK的組合也基本能滿足大部分的需求,畢竟就地取材最方便。

責任編輯:haq

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

    關注

    134

    文章

    9265

    瀏覽量

    373304
  • 調(diào)試
    +關注

    關注

    7

    文章

    602

    瀏覽量

    34399

原文標題:JLINK配合IAR斷點功能,讓bug無處可藏

文章出處:【微信號:TopSemic,微信公眾號:TopSemic嵌入式】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問IAR是否支持LS1043A?

    我在 IAR 支持設備列表中只能找到一個設備LS1046A, 這是否意味著 IAR 是否不支持其他器件(LS1043A、LS1023...)? 我只想針對 LS1043A 的不同接口編
    發(fā)表于 04-08 06:16

    PXI-8433/4的規(guī)范使用方法分享

    應用中,因兩線制接線配置不當導致通訊障。本文將以此問題為入點,系統(tǒng)講解PXI-8433/4的規(guī)范使用方法
    的頭像 發(fā)表于 03-14 10:38 ?423次閱讀
    PXI-8433/4的規(guī)范<b class='flag-5'>使用方法</b>分享

    HarmonyOS NEXT 原生應用/元服務-ArkTS代碼調(diào)試使用斷點

    DevEco Studio ArkTS支持斷點和異常斷點,這些斷點可以觸發(fā)不同的操作。 行斷點斷點
    發(fā)表于 03-04 17:15

    精密空調(diào)操作使用方法詳解

    精密空調(diào)操作使用方法詳解
    的頭像 發(fā)表于 02-10 14:44 ?482次閱讀
    精密空調(diào)操作<b class='flag-5'>使用方法</b>詳解

    AB伺服軟件使用方法

    AB伺服軟件使用方法
    發(fā)表于 12-24 14:45 ?0次下載

    示波器高壓探頭使用方法

    示波器高壓探頭是一種用于測量高電壓信號的儀器,通常用于高壓電源、電機、變壓器等電氣設備的測試。以下是示波器高壓探頭的詳細使用方法
    的頭像 發(fā)表于 10-03 16:43 ?875次閱讀

    探針頭型使用方法有哪些

    探針頭型的使用方法多種多樣,具體取決于探針頭型的類型、被測對象的特性以及測試需求。以下是一些常見探針頭型的使用方法概述: 1. 凹頭探針 用途 :主要用于測試長導腳、端子及繞線柱等較長或較粗的被測點
    的頭像 發(fā)表于 09-07 10:57 ?1369次閱讀

    DC/DC模擬的基本使用方法和特性確認方法

    本篇介紹了DC/DC模擬的基本使用方法及確認基本特性的方法
    的頭像 發(fā)表于 08-20 17:08 ?1085次閱讀
    DC/DC模擬的基本<b class='flag-5'>使用方法</b>和特性確認<b class='flag-5'>方法</b>

    圖片動畫控件和Video image控件的使用方法

    在UI開發(fā)過程中,序列幀基本是繞不開的,AWTK 支持多種方法實現(xiàn)序列幀顯示,本文介紹圖片動畫控件和Video image控件的使用方法
    的頭像 發(fā)表于 08-06 16:44 ?1378次閱讀
    圖片動畫控件和Video image控件的<b class='flag-5'>使用方法</b>

    芯科集成與IAR展開生態(tài)合作,IAR全面支持CX3288系列車規(guī)MCU

    IAR嵌入式開發(fā)解決方案已全面支持芯科集成CX3288系列車規(guī)RISC-V MCU,共同推動汽車高品質(zhì)應用的安全開發(fā) 中國上海,2024年7月16日——全球領先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應商
    發(fā)表于 07-16 16:17 ?379次閱讀

    淺談錫膏的儲存及使用方法

    錫膏(焊錫膏)是電子組裝過程中常用的材料,它的儲存和使用方法對保證焊接質(zhì)量和性能至關重要。以下是詳細的儲存及使用方法
    的頭像 發(fā)表于 06-27 10:02 ?1378次閱讀

    可編程電源使用方法

    可編程電源使用方法 可編程電源使用方法 摘要:本文詳細介紹了可編程電源的使用方法,包括其基本概念、主要功能、選擇原則、操作步驟、注意事項以及實際應用案例,旨在幫助讀者全面了解可編程電源
    的頭像 發(fā)表于 06-10 15:29 ?1454次閱讀

    芯海應用筆記:通用 MCU 基于 IAR 芯片包 IAR9 開發(fā)指南

    MCU 芯片。芯海科技基于 IAR 環(huán)境開發(fā)芯片包,給用戶更多的編譯選擇,提高用戶開發(fā)靈活性。本應用筆記從芯片包結(jié)構(gòu)、DEMO 例程下載使用、工程建立等角度出發(fā),詳細介紹 IAR 芯片包的使用方法,旨在
    發(fā)表于 05-16 11:52

    手柄控制代碼及使用方法

    手柄控制代碼及使用方法
    的頭像 發(fā)表于 05-15 10:19 ?2732次閱讀

    STM8S在IAR軟件仿真Simulator怎么查看運行時間?

    STM8S 在IAR軟件仿真Simulator怎么查看運行時間?在某些芯片通信時,會要求延時5us,10us,150ms等,這些延時不需要太精確,只要大概就好,但怎么在Simulator仿真里能通過斷點查看,即兩個斷點之間的運行
    發(fā)表于 05-09 07:48
    主站蜘蛛池模板: 久久婷婷激情综合色综合也去 | 狼色网站| 午夜丁香婷婷 | 日本视频免费高清一本18 | 中文字幕区 | 国产欧美久久久精品影院 | 性过程很黄的小说男男 | 男人女人真曰批视频播放 | 丁香婷婷社区 | 午夜福利国产一级毛片 | 超级乱淫伦网站 | 国产黄色小视频在线观看 | 亚洲精品91香蕉综合区 | 黑人又大又粗又长又深受不了 | 欧美性猛交xxxx黑人喷水 | 国产成人小视频 | 亚洲综合图片人成综合网 | 亚洲人成网站色7799在线观看 | 黄黄网站 | 午夜影院毛片 | 色婷婷精品大全在线视频 | 成人啪啪免费视频 | 婷婷在线影院 | 日本a级精品一区二区三区 日本a级特黄三级三级三级 | 国产亚洲精品激情都市 | 色片在线| 国产在线播放一区 | 美国一级毛片片aa久久综合 | 天堂在线视频 | 高清色视频 | 黄色一级片网址 | 久久久久国产精品 | 7777色鬼xxxx欧美色夫 | 天天干天天拍天天射天天添天天爱 | 操一操日一日 | 日日噜噜噜夜夜爽爽狠狠 | 二级特黄绝大片免费视频大片 | 欧美ww| 久久天天躁狠狠躁夜夜2020一 | 赛罗奥特曼银河帝国普通话免费版 | 深深激情网 |