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

6 則留言:

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

    回覆刪除
  2. 可以買arm 原廠的
    or 上yahoo拍賣打multi-ice
    也有

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

    回覆刪除
  4. Dear 碩彥

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

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

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

    希望對你有幫助

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

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

    回覆刪除