Ⅰ
寫在前面
有網(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í)際代碼對不上號了。遇到以上問題,解決的辦法一般有下面幾種。
Ⅱ
常見解決辦法
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)化等級較高
在某些場合下,比如要求執(zhí)行代碼的速度,或者代碼容量比較大而芯片容量又有限,就需要對代碼進(jìn)行優(yōu)化,優(yōu)化的等級分多種。
沒有特別要求,代碼就可以不用優(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)化的等級:

4.代碼處于條件編譯未選中狀態(tài)
什么是條件編譯呢?
就是#if #else #endif 這類帶有#的預(yù)處理編譯。
如果你的代碼不再預(yù)編譯里面,則不能打斷點(diǎn)。
5.推測的問題
我們都知道軟件一般都會(huì)存在bug,即使是強(qiáng)大的Windows、iOS、Android操作系統(tǒng)也經(jīng)常修復(fù)或升級。
若懷疑是IAR軟件自身的問題,建議升級到最新。我個(gè)人喜歡嘗試新鮮的東西,之前看過我文章的人都知道,Keil、IAR新版我和大家分享過。若你IAR出現(xiàn)此類問題,上面幾種方法都無效,建議更新IAR版本:
IAR for STM8介紹、下載、安裝與注冊
IAR for ARM介紹、下載、安裝與注冊
其他問題都排除了,還有可能是Windows系統(tǒng)高度優(yōu)化的問題,這個(gè)建議重裝系統(tǒng)。
-
IAR
+關(guān)注
關(guān)注
5文章
410瀏覽量
38539 -
在線調(diào)試
+關(guān)注
關(guān)注
0文章
5瀏覽量
6673
發(fā)布評論請先 登錄
電能質(zhì)量在線監(jiān)測裝置支持斷點(diǎn)續(xù)傳的文件傳輸協(xié)議有哪些?
基于蜂鳥E203的硬件斷點(diǎn)功能添加
debug調(diào)試的時(shí)候斷點(diǎn)失效了,程序不能跑到斷點(diǎn),怎么解決?
工業(yè)網(wǎng)關(guān)的斷點(diǎn)續(xù)傳有哪些作用
UPS電源“不間斷點(diǎn)”全解析:技術(shù)原理、關(guān)鍵指標(biāo)與選購避坑指南
工業(yè)智能網(wǎng)關(guān)的斷點(diǎn)續(xù)傳功能體現(xiàn)在那些方面
解決IAR不能設(shè)置斷點(diǎn)的問題
評論