Ⅰ
寫在前面
有網友問:我在使用IAR在線調試過程中不能打斷點,但在編輯的時候可以打斷點,一點擊調試按鈕之后,所打的斷點就失效了······
類似的問題:在先調試過程中,在反匯編的窗口中可以設置斷點,在C編譯區不能設置斷點。
查看斷點的方法:菜單view->breakpoints 就會在窗口顯示所有斷點信息。
通常出現這類現象是因為你要加斷點的位置并沒有程序(或不匹配程序),也就是你的C代碼和你的實際代碼對不上號了。遇到以上問題,解決的辦法一般有下面幾種。
Ⅱ
常見解決辦法
1.Rebuild All重新編譯
A.Project -> Clean:把前面編譯后的文件刪除;
B.Project ->Rebuild All:再重新編譯所有文件。
這種情況比較常見,有可能是在更改了部分文件。
2.查看配置是否正確
A.生產Debug信息
Project ->Options->C/C++ Compiler->Output:勾選上“Generate debug informat” 這個選項。
B.鏈接包含Debug信息
Project ->Options->linker->Output:勾選上“Include debug information in output” 這個選項。
3.代碼優化等級較高
在某些場合下,比如要求執行代碼的速度,或者代碼容量比較大而芯片容量又有限,就需要對代碼進行優化,優化的等級分多種。
沒有特別要求,代碼就可以不用優化。代碼高度優化存在弊端,特別是代碼不規范的情況下。有一點就是本文說的,高度優化的代碼,會影響在線調試,可能你某部分代碼被優化導致你不能打斷點。
這個時候就容易出現:在先調試過程中,在反匯編的窗口中可以設置斷點,在C編譯區不能設置斷點。
Project ->Options->C/C++ Compiler->Optimizations選擇優化的等級:
4.代碼處于條件編譯未選中狀態
什么是條件編譯呢?
就是#if #else #endif 這類帶有#的預處理編譯。
如果你的代碼不再預編譯里面,則不能打斷點。
5.推測的問題
我們都知道軟件一般都會存在bug,即使是強大的Windows、iOS、Android操作系統也經常修復或升級。
若懷疑是IAR軟件自身的問題,建議升級到最新。我個人喜歡嘗試新鮮的東西,之前看過我文章的人都知道,Keil、IAR新版我和大家分享過。若你IAR出現此類問題,上面幾種方法都無效,建議更新IAR版本:
IAR for ARM介紹、下載、安裝與注冊
其他問題都排除了,還有可能是Windows系統高度優化的問題,這個建議重裝系統。
-
IAR
+關注
關注
5文章
350瀏覽量
36665 -
在線調試
+關注
關注
0文章
5瀏覽量
6521
發布評論請先 登錄
相關推薦
評論