Ⅰ
寫在前面
有網(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 ARM介紹、下載、安裝與注冊(cè)
其他問題都排除了,還有可能是Windows系統(tǒng)高度優(yōu)化的問題,這個(gè)建議重裝系統(tǒng)。
-
IAR
+關(guān)注
關(guān)注
5文章
339瀏覽量
36494 -
在線調(diào)試
+關(guān)注
關(guān)注
0文章
5瀏覽量
6512
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論