91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

在CubeIDE環(huán)境下怎么去調(diào)試代碼呢?

冬至子 ? 來源:聊點(diǎn)嵌入式 ? 作者:聊點(diǎn)嵌入式 ? 2023-11-06 15:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

搞軟件開發(fā),如果誰能拍胸脯說自己開發(fā)的代碼不存在bug,一定會(huì)被現(xiàn)實(shí)打臉的。系統(tǒng)復(fù)雜了,代碼多了,一定會(huì)出問題。就算代碼架構(gòu)設(shè)計(jì)得多么先進(jìn),程序員編程水平多么高,團(tuán)隊(duì)協(xié)作多么緊密,代碼審核多么嚴(yán)謹(jǐn),運(yùn)行出問題的幾率一定存在,是不過是概率大小,出問題早晚,問題的嚴(yán)重與否而已。

既然代碼會(huì)出問題,那肯定要解決,最有效的辦法就是調(diào)試(Debug)了。不管是嵌入式開發(fā),還是應(yīng)用開發(fā),調(diào)試都是程序員必備技能,只不過嵌入式開發(fā)的調(diào)試又有所不同,除了需要OCD、GDB之類的調(diào)試軟件之外,還需要J-LinkST-Link等調(diào)試器,以及片上JTAG模塊的支持。

我在讀大學(xué)的時(shí)候?qū)W的是51單片機(jī),當(dāng)時(shí)也只有實(shí)驗(yàn)室有實(shí)驗(yàn)箱。所謂的調(diào)試基本就是根據(jù)運(yùn)行現(xiàn)象去分析,比如某種亮燈狀態(tài)表示某種情況,或者是串口打印信息,屏幕顯示信息等,以此來Debug。

后來跟課題組做項(xiàng)目,陸續(xù)用到AVRPIC單片機(jī),當(dāng)時(shí)基本沒有第三方的開發(fā)板,只能找官方資源,官方的下載器。官方的調(diào)試器極其昂貴,想調(diào)試的話也只能跟調(diào)試51一樣,基本都能解決問題,就是要麻煩一點(diǎn)。

現(xiàn)在的ARM調(diào)試器都是白菜價(jià),各個(gè)IDE也都具備基本的調(diào)試功能,Debug更方便了。Keil下的調(diào)試比較直觀,在工程選項(xiàng)里配置好調(diào)試參數(shù)后,點(diǎn)個(gè)按鈕就進(jìn)入調(diào)試模式,這里就不多介紹。今天來講一下CubeIDE下怎么去調(diào)試代碼。

1. CubeIDE的編譯選項(xiàng)

Keil不同,基于EclipseCubeIDE下的工程默認(rèn)有DebugRelease兩個(gè)編譯配置,如下圖所示??梢栽诠こ虒傩韵略O(shè)置不同的編譯參數(shù),分別作為調(diào)試和發(fā)行時(shí)使用,當(dāng)然也可以根據(jù)需要增加新的編譯配置。Keil下也可以實(shí)現(xiàn)類似的功能,不過需要我們自己去配置,這個(gè)有很多文檔可以參考。

圖片

保留不同編譯配置的功能在寫代碼時(shí)非常有用,結(jié)合條件編譯,可以提高調(diào)試效率,或者是適應(yīng)不同的硬件平臺(tái),不需要再搞一個(gè)新的工程。例如在Debug編譯配置下,默認(rèn)會(huì)定義一個(gè)DEBUG的符號(hào),在Release編譯配置下,則沒有定義這個(gè)符號(hào)。見下圖。

圖片

我們?cè)诰帉懘a的時(shí)候,就可以根據(jù)編譯配置的不同,結(jié)合條件編譯,選擇編譯不同的代碼。例如,在正常工作的時(shí)候,某個(gè)傳感器上電后需要經(jīng)過10分鐘才能正常工作,而在調(diào)試的時(shí)候,完全沒必要去等這10分鐘。我們可以用下面的偽代碼實(shí)現(xiàn)這個(gè)功能。

#ifndef DEBUG
 delay_second(10*60);    //延時(shí)10分鐘
 #endif
  1. 調(diào)試配置

使用Debug編譯選項(xiàng)編譯完成后,會(huì)在工程目錄->Debug下生成elf可執(zhí)行文件,elf文件包含調(diào)試信息,這是我們調(diào)試的必要文件。Eclipse調(diào)試前需要配置調(diào)試參數(shù),配置方式見下圖。

圖片

需要進(jìn)行調(diào)試的話,點(diǎn)擊工具欄小蟲子圖標(biāo)就進(jìn)入調(diào)試模式。

在調(diào)試模式下可以設(shè)置斷點(diǎn),或單步運(yùn)行,也可以查看寄存器的值,變量值等。另外CubeIDE還提供了很多有用的功能,比如說可以調(diào)出“故障分析器”,代碼出現(xiàn)異常時(shí)可以自動(dòng)分析錯(cuò)誤類型,不需要我們費(fèi)力的去查看相關(guān)寄存器的值來確定錯(cuò)誤類型;還可以顯示反匯編后的匯編代碼,與C代碼同步顯示。需要注意的是,調(diào)試模式下,編譯代碼應(yīng)選擇不優(yōu)化,這樣設(shè)置的斷點(diǎn)才都會(huì)有效。

調(diào)試時(shí)所需要查看的信息都可以在下圖的菜單里調(diào)出來。

圖片

3. 小結(jié)

進(jìn)入調(diào)試模式后,就可以根據(jù)實(shí)際情況設(shè)置斷點(diǎn),查看寄存器或變量值,也可以根據(jù)需要單步運(yùn)行。大家可以在實(shí)踐中熟悉調(diào)試方法與技巧。

另外,在調(diào)試模式下,無論是打斷點(diǎn)還是單步運(yùn)行,都沒有辦法實(shí)時(shí)跟蹤寄存器或變量值,看到的只是斷點(diǎn)處的值,如果想看到實(shí)時(shí)變化的寄存器或變量值,甚至是某個(gè)函數(shù)被調(diào)用的次數(shù),或者運(yùn)行占用的CPU時(shí)間等,可以通過ARM提供的SWV(Serial Wire Viewer)實(shí)時(shí)跟蹤技術(shù)來實(shí)現(xiàn),下次我們?cè)賮碇v講這個(gè)SWV。

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

    關(guān)注

    2576

    文章

    55110

    瀏覽量

    791845
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5611

    瀏覽量

    130088
  • STM32
    +關(guān)注

    關(guān)注

    2310

    文章

    11167

    瀏覽量

    373686
  • 調(diào)試器
    +關(guān)注

    關(guān)注

    1

    文章

    329

    瀏覽量

    25109
  • ARM單片機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問STM32CubeIDE能否生成MDK代碼?

    雖然我知道CubeIDE是集成開發(fā)環(huán)境,代碼生成、編輯、編譯下載調(diào)試都OK,但是想問一,能否像STM32CubeMX那樣,生成
    發(fā)表于 03-13 08:02

    Ubuntu環(huán)境如何使用stlink調(diào)試stm32f4-discovery程序

    Ubuntu環(huán)境如何使用stlink調(diào)試stm32f4-discovery程序?Ubun
    發(fā)表于 11-02 07:20

    如何編寫STM32CubeMX生成的Keil工程代碼

    如何編寫STM32CubeMX生成的Keil工程代碼?如何實(shí)現(xiàn)STM32CubeIDE創(chuàng)建的工程
    發(fā)表于 12-02 07:59

    STM32CUBEIDE環(huán)境printf()和scanf()為什么會(huì)運(yùn)行失敗

    STM32CUBEIDE環(huán)境printf()和scanf()為什么會(huì)運(yùn)行失敗?其解決方案是什么?
    發(fā)表于 12-02 07:01

    如何對(duì)STM32CUBEIDE的ADC DMA進(jìn)行配置

    STM32的ADC DMA該怎樣使用?如何對(duì)STM32CUBEIDE的ADC DMA進(jìn)行配置?
    發(fā)表于 01-25 06:16

    怎樣使用STM32CubeIDE軟件

    如何對(duì)STM32CubeIDE進(jìn)行配置?怎樣使用STM32CubeIDE軟件?
    發(fā)表于 02-28 08:48

    怎樣控制基于STM32CubeIDE的智能小車

    基于STM32CubeIDE的智能小車包括哪些功能?怎樣控制基于STM32CubeIDE的智能小車?
    發(fā)表于 03-01 07:39

    請(qǐng)問一怎樣使用cubeide生成一些代碼

    請(qǐng)問一怎樣使用cubeide生成一些代碼?
    發(fā)表于 12-08 09:07

    使用STM32CubeIDE生成代碼調(diào)試出錯(cuò)我該如何解決

    我正在使用 STM32CubeIDE 生成代碼,但是當(dāng)我開始調(diào)試時(shí),出現(xiàn)如下錯(cuò)誤:《STMicroelectronics ST-LINK GDB 服務(wù)器。版本 5.2.3版權(quán)所有 (c) 2019
    發(fā)表于 12-19 08:52

    STM32CubeIDE如何在不調(diào)試的情況運(yùn)行?

    試用新的 STM32CubeIDE。大多數(shù)情況,我喜歡它。有一些粗糙的邊緣和對(duì)話不能正常運(yùn)行(至少 Mac 上),但我不能做的是向工具欄添加“運(yùn)行”配置。我只想構(gòu)建代碼并刷新它,而
    發(fā)表于 01-31 07:20

    STM32CubeIDE上構(gòu)建TouchGFX生成的代碼,報(bào)調(diào)試器錯(cuò)誤怎么處理?

    STM32F746NGHx_FLASH.ld(來自特定板的 Repository Demo),將文件大小減小到 35KB。但是代碼沒有目標(biāo)上工作,調(diào)試模式提到的 2) 或 STM
    發(fā)表于 02-07 07:11

    STM32CubeIDE所支持的幾個(gè)調(diào)試小工具及功能

    意法半導(dǎo)體ST公司為廣大STM32用戶免費(fèi)提供了基于GCC的功能強(qiáng)大集成調(diào)試工具STM32CubeIDE。這里簡(jiǎn)單演示STM32CubeIDE所支持的幾個(gè)
    的頭像 發(fā)表于 07-11 09:59 ?4868次閱讀

    集成開發(fā)環(huán)境STM32CubeIDE查看匯編代碼的相關(guān)配置操作

    有人使用ST免費(fèi)提供的集成開發(fā)環(huán)境STM32CubeIDE,想知道如何查看匯編代碼,這里簡(jiǎn)單介紹下相關(guān)配置操作。
    發(fā)表于 09-01 09:55 ?4946次閱讀

    基于STM32CubeIDE調(diào)試配置

    當(dāng)我把這個(gè)地方取消勾選后,使用前面相同代碼做驗(yàn)證調(diào)試,此時(shí)不再觸發(fā)異常并返回0值結(jié)果。到此,也就解釋了發(fā)生除以0操作時(shí),為什么STM32CubeIDE會(huì)出現(xiàn)與MDK、IAR不同的調(diào)試結(jié)
    的頭像 發(fā)表于 10-08 10:01 ?5516次閱讀

    STM32Cube CubeIDE添加代碼點(diǎn)亮LED

    前一篇已經(jīng)生成了CubeIDE的工程代碼,接下來就要用CubeIDE打開,添加點(diǎn)亮LED燈的代碼了。
    的頭像 發(fā)表于 11-06 14:40 ?2857次閱讀
    STM32Cube <b class='flag-5'>CubeIDE</b>添加<b class='flag-5'>代碼</b>點(diǎn)亮LED