2007年10月1日 星期一

用Multi-ICE 觀看變數

CodeWorrior
編輯release版


想要用AXD 搭配 multi-ice 觀看系統變數時
會出現 "Variable removed by compiler (optimization)"


這時候
想要觀看你所宣告的變數
請到 language settings -> ARM C compiler or ARM C++ compiler (取決於你所撰寫的語言)
-> Optimizaion Level
Check Optimization level from Most( good debug view, good code) to Minimum (best debug view)



就可以看到你宣告的變數 在程式執行到的時候 會變成什麼值



如果想要看暫存器的值
似乎沒辦法
要開 Process Views -> Registers
配合看codes的時候
點選 interleave disassembly
看該暫存器 存到哪個 register

透過Facebook分享

6 則留言:

harlan 提到...

請問Multi-ICE買那家的?cost大約是?
感謝

鍾志均 提到...

可以買arm 原廠的
or 上yahoo拍賣打multi-ice
也有

Unknown 提到...

請問一下,我手邊有ADS、multi-ice和arm926ej-s為主的開發板,我們平常開發是透過axd和multi-ice來對開發的映像檔來做除錯,但我們有辦法透過axd加ice對運行中的開發板做即時的監控嗎,簡單說就是我們有辦法在系統運行時偵測arm的暫存器內容嗎,我用ptrace() system call抓取arm暫存器print出來,我想用ice驗證,是監控原來系統內的資料,而不是監控load到板子上的映像檔,因為axd好像都要load image,但我只想偵測原來系統內的暫存器,還是有其它方法能達成,麻煩高手能幫忙回答一下

鍾志均 提到...

Dear 碩彥

你說的"偵測原來系統內的暫存器"
是可以做到的

在你將image載入到版子的時候
按下AXD上方
Process Views-> Registers
就可以讓你看到arm register 的值

你可以透過設定中斷點的方式
執行某一行code時
去看arm register

希望對你有幫助

Unknown 提到...

不好意思,我描述的不太清楚,我想說的是當我的開發板在執行flash裡原有的作業系統的時候,我有辦法讀取到暫存器的值嗎,並沒有要載入image,我主要是想看process在作業系統執行時暫存器的值是否跟用ptrace()抓取出來的暫存器值相同,因為平常是在開發板子上的應用時會用axd和multi-ice來偵測,所以我想說是否可用axd跟ice來作到我說的偵測,真的不好意思前面說的太雜,因為本身對嵌入式系統才接觸1年多,所以有許多地方還要學習、釐清,謝謝您的回答

鍾志均 提到...

如果你是在有os的情況下
相信已經超出axd and multi-ice可以使用的範圍了