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

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

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

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

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-20 10:03 ? 次閱讀

寫在前面

有網(wǎng)友問:我在使用IAR在線調(diào)試過程中不能打斷點(diǎn),但在編輯的時(shí)候可以打斷點(diǎn),一點(diǎn)擊調(diào)試按鈕之后,所打的斷點(diǎn)就失效了······

類似的問題:在先調(diào)試過程中,在反匯編的窗口中可以設(shè)置斷點(diǎn),在C編譯區(qū)不能設(shè)置斷點(diǎn)。

查看斷點(diǎn)的方法:菜單view->breakpoints 就會(huì)在窗口顯示所有斷點(diǎn)信息。

通常出現(xiàn)這類現(xiàn)象是因?yàn)槟阋訑帱c(diǎn)的位置并沒有程序(或不匹配程序),也就是你的C代碼和你的實(shí)際代碼對(duì)不上號(hào)了。遇到以上問題,解決的辦法一般有下面幾種。

常見解決辦法

1.Rebuild All重新編譯

A.Project -> Clean:把前面編譯后的文件刪除;

B.Project ->Rebuild All:再重新編譯所有文件。

這種情況比較常見,有可能是在更改了部分文件。

2.查看配置是否正確

A.生產(chǎn)Debug信息

Project ->Options->C/C++ Compiler->Output:勾選上“Generate debug informat” 這個(gè)選項(xiàng)。

B.鏈接包含Debug信息

Project ->Options->linker->Output:勾選上“Include debug information in output” 這個(gè)選項(xiàng)。

3.代碼優(yōu)化等級(jí)較高

在某些場(chǎng)合下,比如要求執(zhí)行代碼的速度,或者代碼容量比較大而芯片容量又有限,就需要對(duì)代碼進(jìn)行優(yōu)化,優(yōu)化的等級(jí)分多種。

沒有特別要求,代碼就可以不用優(yōu)化。代碼高度優(yōu)化存在弊端,特別是代碼不規(guī)范的情況下。有一點(diǎn)就是本文說的,高度優(yōu)化的代碼,會(huì)影響在線調(diào)試,可能你某部分代碼被優(yōu)化導(dǎo)致你不能打斷點(diǎn)。

這個(gè)時(shí)候就容易出現(xiàn):在先調(diào)試過程中,在反匯編的窗口中可以設(shè)置斷點(diǎn),在C編譯區(qū)不能設(shè)置斷點(diǎn)。

Project ->Options->C/C++ Compiler->Optimizations選擇優(yōu)化的等級(jí):

4.代碼處于條件編譯未選中狀態(tài)

什么是條件編譯呢?

就是#if #else #endif 這類帶有#的預(yù)處理編譯。

如果你的代碼不再預(yù)編譯里面,則不能打斷點(diǎn)。

5.推測(cè)的問題

我們都知道軟件一般都會(huì)存在bug,即使是強(qiáng)大的Windows、iOS、Android操作系統(tǒng)也經(jīng)常修復(fù)或升級(jí)。

若懷疑是IAR軟件自身的問題,建議升級(jí)到最新。我個(gè)人喜歡嘗試新鮮的東西,之前看過我文章的人都知道,Keil、IAR新版我和大家分享過。若你IAR出現(xiàn)此類問題,上面幾種方法都無效,建議更新IAR版本:

IAR for STM8介紹、下載、安裝與注冊(cè)

IAR for ARM介紹、下載、安裝與注冊(cè)

其他問題都排除了,還有可能是Windows系統(tǒng)高度優(yōu)化的問題,這個(gè)建議重裝系統(tǒng)。

聲明:本文內(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)投訴
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    339

    瀏覽量

    36494
  • 在線調(diào)試
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6512
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TC2XX/3XX多核斷點(diǎn)設(shè)置無效的原因?

    TC2XX/3XX多核斷點(diǎn)設(shè)置無效,請(qǐng)問hinghtec的多核要怎么才能被觸發(fā),(函數(shù)已經(jīng)執(zhí)行,但是斷點(diǎn)沒有被觸發(fā))或者如何才能進(jìn)行多核調(diào)試。
    發(fā)表于 07-03 07:33

    keil 斷點(diǎn) 執(zhí)行次數(shù)設(shè)置后,出現(xiàn)非法變量的錯(cuò)誤

    keil 斷點(diǎn) 執(zhí)行次數(shù)設(shè)置后,出現(xiàn)非法變量的錯(cuò)誤。希望大家?guī)蛶兔Α?
    發(fā)表于 06-02 19:25

    STM32C011的芯片不能IAR識(shí)別到,為什么?

    目前我在使用IAR8.5做開發(fā),但是發(fā)現(xiàn)STM32C011的芯片不能IAR識(shí)別到,顯示的沒有這顆芯片,目前除了升級(jí)IAR版本來兼容這顆芯片外還有別的方法嗎?
    發(fā)表于 05-24 07:03

    iar for stm8為什么不能用了?

    iar for stm8不能用了,求高手指點(diǎn)!
    發(fā)表于 05-15 06:49

    STM8S在IAR軟件仿真Simulator怎么查看運(yùn)行時(shí)間?

    STM8S 在IAR軟件仿真Simulator怎么查看運(yùn)行時(shí)間?在某些芯片通信時(shí),會(huì)要求延時(shí)5us,10us,150ms等,這些延時(shí)不需要太精確,只要大概就好,但怎么在Simulator仿真里能通過斷點(diǎn)查看,即兩個(gè)斷點(diǎn)之間的運(yùn)行
    發(fā)表于 05-09 07:48

    freertos啟用IAR自帶插件調(diào)試時(shí)不能查看隊(duì)列信息怎么解決?

    IAR平臺(tái)上調(diào)試freertos,想利用IAR自帶的freertos插件進(jìn)行調(diào)試,但是只能看task的信息,不能看隊(duì)列信息顯示
    發(fā)表于 05-07 06:54

    STM8在STLINK中仿真設(shè)置斷點(diǎn),某些行設(shè)置不了斷點(diǎn)是怎么回事?

    (); } 在 TIM3_CAP_IRQ()函數(shù)里某些行里設(shè)備斷點(diǎn)設(shè)置不了,如在337行中設(shè)置斷點(diǎn),會(huì)自動(dòng)跳到346行中,在337行和342行設(shè)置
    發(fā)表于 04-30 08:02

    IAR斷點(diǎn)停止后,鼠標(biāo)放在watch窗口中查看變量,IAR卡死退出怎么解決?

    IAR版本:8.32 操作過程如下: 1.在IAR設(shè)置相關(guān)端點(diǎn); 2.在觀察(watch)窗口中加入相關(guān)變量或數(shù)組,用于在程序斷點(diǎn)停止后觀測(cè)其數(shù)值變化; 3.運(yùn)行程序至端點(diǎn)停止后,一
    發(fā)表于 04-19 07:21

    STM8S003仿真的時(shí)候如果打了斷點(diǎn),運(yùn)行到斷點(diǎn)后再繼續(xù)運(yùn)行,程序就會(huì)出錯(cuò)跑飛RAM數(shù)據(jù)都亂了,為什么?

    我用IAR 8.3 ,發(fā)現(xiàn)仿真的時(shí)候如果打了斷點(diǎn),運(yùn)行到斷點(diǎn)后再繼續(xù)運(yùn)行,程序就會(huì)出錯(cuò)跑飛,RAM數(shù)據(jù)都亂了。不打斷點(diǎn),就不會(huì)出錯(cuò),這是什么問題?
    發(fā)表于 04-18 08:27

    STM32F103中斷服務(wù)程序里設(shè)置斷點(diǎn)沒有停下來是什么原因引起的?

    STM32F103程序,調(diào)試時(shí)在定時(shí)器中斷服務(wù)程序中設(shè)置斷點(diǎn),但是沒有停下來,程序能正常運(yùn)行,看中斷里的變量也有變化。多設(shè)置幾個(gè)斷點(diǎn)也沒用。 其它地方
    發(fā)表于 04-07 08:02

    請(qǐng)問UDE調(diào)試有些函數(shù)前面是不能設(shè)置斷點(diǎn)的嗎?

    如下函數(shù)不能設(shè)置斷點(diǎn):IfxPort_togglePin( MODULE_P33, 8);IfxStm_waitTicks( MODULE_STM0, 5000000);
    發(fā)表于 02-20 06:55

    keil在線調(diào)試無法設(shè)置斷點(diǎn)怎么解決?

    使用的是Keil IDE及Jlink仿真器,但是keil啟動(dòng)在線仿真時(shí)無法設(shè)置斷點(diǎn),仿真前設(shè)置斷點(diǎn)在仿真時(shí)會(huì)無效,仿真僅能全速運(yùn)行,如下圖: 請(qǐng)問大家有沒有遇到類似的情況,是怎么解決
    發(fā)表于 11-03 06:11

    怎么設(shè)置IAR輸出BIN文件?

    怎么設(shè)置IAR輸出BIN文件
    發(fā)表于 10-23 06:05

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

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

    GDB調(diào)試?yán)镌趺?b class='flag-5'>設(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 ?1024次閱讀