如何在IAR中通過Watch視窗觀察區域性變數的值
原文地址:http://www.cnblogs.com/wx865220862/archive/2013/03/27/2984168.html
最近在用430開發一款產品,在軟體除錯的時候發現Watch視窗中無法觀察區域性變數的值,總是顯示<unavailable>,下面通過一個簡答的例子說明一下現象:
#include "msp430g2553.h" /* Global variable */ unsigned char ReceiveGlobal; unsigned char addxy(unsigned char x,unsigned char y) { unsigned char z; z= x+y; return z; } void main() { /* Local variable */ unsigned char Receive0; static unsigned char Receive1; volatile unsigned char Receive2; Receive0 = addxy(0,1); Receive1 = addxy(1,2); Receive2 = addxy(3,4); ReceiveGlobal = addxy(5,6); while(1); }
在while(1)處設一斷點,在Debug模式下通過Watch視窗觀察變數:
現在回過頭去看IAR中的"Options — c/c++ compiler — Optimization[ˌɔptimaiˈzeiʃən] — Level" 選項:
Level的預設值為Low,當我把Level選為None之後,即不執行任何優化時,全域性變數、靜態區域性變數、區域性變數的值都可以看到,如下圖所示。
當我把優化等級選為Midium或者High之後,全域性變數、靜態區域性變數、區域性變數的值都不可見了。
結論:要想觀察區域性變數的值,除錯的時候可以把優化等級設為None.
補充幾個知識點:
- 堆疊(stack)——由編譯器自動分配釋放 ,存放函式的引數值,區域性變數的值等。
- 靜態儲存區(static)—— 全域性變數和靜態變數的儲存是放在一塊的。初始化的全域性變數和靜態變數在一塊區域;未初始化的全域性變數和靜態變數在相鄰的另一塊區域。程式結束後由系統釋放。
相關推薦
如何在IAR中通過Watch視窗觀察區域性變數的值
原文地址:http://www.cnblogs.com/wx865220862/archive/2013/03/27/2984168.html 最近在用430開發一款產品,在軟體除錯的時候發現Watch視窗中無法觀察區域性變數的值,總是顯示<unavailable>,下面通過一個簡答的例子
vue中通過watch監聽資料變化,帶來的效能優化
問題背景 為什麼要用 vuex? 在使用 Vue 進行元件化開發時,元件通訊是一個十分重要的部分。在 Vue 中,父子元件的關係可以總結為 父子元件通訊:父元件通過 props 向下傳遞資料給子元件 子父元件通訊:子元件通過 events 給父元件傳送訊息 使
Android Studio除錯時無法watch區域性變數值
在Android Studio中下斷點除錯時,可以在“Watches”視窗中檢視變數的。但是當要檢視的變數是區域性變數時,String path = getFilesDir().toString();在
IAR中通過ICF指定某變數的地址 或者 通過語句指定
如果想定在rom空間 icf中: place at address mem:0x08090000 { readonlysection .test }; C:中: #pragma location = ".test" const u32 uiData[512];// cons
shell指令碼中使用if和bc比較變數值和指定值
【預備知識】 假如我有個日誌檔案,每天會往裡追加。日誌摘要如下—— 2018-06-12 09:08:56,105 - hdfs.client - INFO - Renaming ‘/apps/wps_prt_feature/business_info/20
Java MVC Controller 中通過不同方式獲取 @PathVariable 引數值
1 @RequestMapping(value = "/test/{a}") 2 public @ResponseBody Object test(@PathVariable String a) { 3 4 return a; 5 } 2.需要通用@PathVa
AngularJS 中ng-model通過$watch動態取值
blog html lib brush google java logs con head 這個例子的意思是,當xxxx的長度不超過6時,xxxx和yyyy兩個input的model是無關的,但當xxxx超過6,則yyyy會跟隨其值而變化。 <!doctype
程序通過定義學生結構體變量,存儲學生的學號、姓名和3門課的成績。函數fun的功能是:對形參b所指結構體變量中的數據進行修改,並在主函數中輸出修改後的數據。
一次 數據 mod long 成績 nbsp data 例如 main 程序通過定義學生結構體變量,存儲學生的學號、姓名和3門課的成績。函數fun的功能是:對形參b所指結構體變量中的數據進行修改,並在主函數中輸出修改後的數據。例如,若b所指變量t中的學號、姓名和三門課的成績
Java虛擬機器中棧,棧幀,區域性變量表的概念和特徵。
Java虛擬機器棧的特徵: 執行緒私有: 後進先出(LIFO)棧 java虛擬機器棧和程式計數器一樣,他是執行緒私有的記憶體區域,他的生命週期與執行緒相同,java虛擬機器棧描述的是java方法執行時
VC++6_0除錯篇:變數的觀察--watch視窗的技巧
寫一下VC6的watch視窗的一些小技巧,對於除錯過程是非常有幫助的。VC6年紀已經很大了,微軟好像也不再支援,但是還是有很多人在用。我本人是非常喜歡它的小巧(相對vs2003,2005),佔資源少,即使這樣它的除錯功能仍然超級強,真是不錯。
VC++6.0除錯篇:執行時間的觀察--watch視窗的技巧續
很簡單的程式碼,main函式中呼叫Sleep(1000)延時1000毫秒,再呼叫自定義的MyDelay(100)延時100毫秒,總共延時1100毫秒。在vc6中輸入程式碼後,在Sleep(1000)和return 0;這兩行各設定一個斷點,然後按F5進入除錯狀態。偵錯程式會停在Sleep(1000)這行。這時
FME中通過HTMLExtractor向HTML要數據
名稱 ren pen 路徑 left 只需要 質數 span 正則表達式 如何不斷擴充數據中心的數據規模,提升數據挖掘的價值,這是我們思考的問題,數據一方面來自於內部生產,一部分數據可以來自於互聯網,互聯網上的數據體量龐大,形態多樣,之前blog裏很多FMEer已經提出了方
SQL Server2008中通過SQL獲取表結構
nds 數據 join xtend isn val data 運行 order SQL Server2008中通過SQL獲取表結構 新增數據用戶,角色為public。映射到待獲取表結構的數據庫上,授與用戶在該數據庫上的身份為db_owner 運行例如以下SQL語
Android中通過反射來設置Toast的顯示時間
ring margin ner manage etc short 延遲 lln sse 這個Toast的顯示在Android中的用途還是非常大的,同一時候我們也知道toast顯示的時間是不可控的。我們僅僅能改動他的顯示樣式和顯示的位置,盡管他提供了一個顯示時間的設置方法
java中 ++前後差別試題及靜態變量一旦賦值不可改變
strong string 變量 void system 自身 mod span n) package javaTest; public class Increment { private static int k=0; public static void m
c++多個文件中如何共用一個全局變量
calc 其它 pop 例子 頭文件 標準 關鍵字 word sin 例子: 頭文件:state.h 源文件:state.cpp 其它源文件:t1.cpp t2.cpp t3.cpp, 這些源文件都包含頭文件state.h。 需要定義一個全局變量
arm32位固定指令中怎麽容納32位變量
固定 這就是 mar span 通過 idt mic 負責 tle 在ARM指令集匯編碼中。32位有效馬上數是通過______偶數位而間接得到的 A、循環左移 B、循環右移、 C、邏輯左移、 D、邏輯右移 答案為循環左移。為什麽?還有最好解釋一下邏輯移動和循環移動
在EXCEL中如何讓一列數字變成文本格式?就是想讓單元格的左上角變一個綠綠的?
excel image 一個 splay wid 宋體 文本格式 margin -1 如何在EXCEL中如何讓一列數字變成文本格式?就是想讓單元格的左上角變一個綠綠的? 解決方案:將整列單元格格式設為文本,然後,選中該列,數據--分列--完成 詳細步驟: (1)選中1行或者
PHP中常用的超全局變量 表單中get和post提交方式的區別 session與cookie的區別 GD庫是做什麽用的
屬性 過程 生成報表 用戶訪問 服務器 接收 file pla request PHP中常用的超全局變量 $_GET ----->get傳送方式$_POST ----->post傳送方式$_REQUEST ----->可以接收到get和post兩種方式的值
在Ubuntu中通過update-alternatives切換軟件版本
best 若是 -i content open jdk res native usr iteye http://persevere.iteye.com/blog/1479524 update-alternatives是ubuntu系統中專門維護系統命令鏈接