IAR沒法調試問題解決

IAR在線調試不能設置斷點 、 IAR斷點無效android

 轉載自http://blog.csdn.net/ybhuangfuguiios

Ⅰ、寫在前面

有網友問:我在使用IAR在線調試過程當中不能打斷點,但在編輯的時候能夠打斷點,一點擊調試按鈕以後,所打的斷點就失效了······優化

 

相似的問題:在先調試過程當中,在反彙編的窗口中能夠設置斷點,在C編譯區不能設置斷點。ui

 

查看斷點的方法:菜單view->breakpoints 就會在窗口顯示全部斷點信息。spa

 

一般出現這類現象是由於你要加斷點的位置並無程序(或不匹配程序),也就是你的C代碼和你的實際代碼對不上號了。遇到以上問題,解決的辦法通常有下面幾種。操作系統

 

Ⅱ、常看法決辦法

1.Rebuild All從新編譯

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

B.Project -> Rebuild All:再從新編譯全部文件。debug

這種狀況比較常見,有多是在更改了部分文件。調試

 

2.查看配置是否正確

A.生成Debug信息orm

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、iOSAndroid操做系統也常常修復或升級。

 

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

 

IAR for STM8介紹、下載、安裝與註冊

 

IAR for ARM介紹、下載、安裝與註冊

 

其餘問題都排除了,還有多是Windows系統高度優化的問題,這個建議重裝系統。

相關文章
相關標籤/搜索