會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





Mplab X IDE Watch 中如何在Debug模式中看到區域變數
新會員
註冊日期:
2014/10/12 10:59
所屬群組:
註冊會員
文章: 18
等級: 2; EXP: 97
HP : 0 / 49
MP : 6 / 831
離線
想請教一下,若今天於Debug模式中,中斷下在副程式裡面,在副程式中有宣告區域變數,想問一下該如何才能看到區域變數裡面的值呢?

目前看到的值都不是正確的,只有將該變數設為全域變數,值才是正確的

6月08日 11:00:02
轉換PDF檔 列印


Re: Mplab X IDE Watch 中如何在Debug模式中看到區域變數
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 15083
等級: 73; EXP: 95
HP : 1094 / 1823
MP : 5027 / 86364
離線
函數裡的區域變數必須在執行該函數時才會生效,所以要看區域變數的職並須利用斷點停在該函數裡才能看到。

為了除錯方便,建議還是使用全域變數的設定。

6月08日 13:30:53
轉換PDF檔 列印


Re: Mplab X IDE Watch 中如何在Debug模式中看到區域變數
新會員
註冊日期:
2014/10/12 10:59
所屬群組:
註冊會員
文章: 18
等級: 2; EXP: 97
HP : 0 / 49
MP : 6 / 831
離線
這邊我是在副程式裡面定的區域變數,中斷點也是下在副程式裡面,也使用一個全域變數來做比對,但值就是在區域變數看是錯。

https://imgur.com/Gy6c061

上圖的EEPROM_CRC16是區域變數,reg_crc是全域變數

EEPROM_CRC16(區域變數)是透過過CRC_CHECK副程式把值Return回來,而reg_crc(全域變數)為CRC_CHECK副程式裡面Return的數值。

這邊用Watch來看是確實不一樣的,剛剛我想說,那我來看看他在if裡面是成立或者不成立,可以判斷說到底是Watch只是顯示錯了,還是本身就不一樣。

結果中斷下在11行跟19行都沒有停住,卻是停在第21行

請問這邊是我使用上有問題嗎?還是MPLAB X IDE本身就有問題?

這邊檢查過優化等級是0,可以確定不是優化造成的問題

6月12日 11:37:57
轉換PDF檔 列印


Re: Mplab X IDE Watch 中如何在Debug模式中看到區域變數
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 15083
等級: 73; EXP: 95
HP : 1094 / 1823
MP : 5027 / 86364
離線
1. 變數值不相同? 可否在區域變數加上 static 靜態變數的宣告在看看。

2. PIC 程式的執行式 Pipeline 的架構,所以 PC 值會比實際執行的程式快取一個指令造成斷點換停在下一行的問題。這無法改變只能去了解程式的執行的下一步。

6月12日 11:57:28

Ryang 於 2020年06月17日 10:58:55
轉換PDF檔 列印


Re: Mplab X IDE Watch 中如何在Debug模式中看到區域變數
高級會員
註冊日期:
2008/04/13 16:02
所屬群組:
註冊會員
文章: 124
等級: 10; EXP: 17
HP : 0 / 229
MP : 41 / 8209
離線
如果是怕跳行,加幾個NOP應該就行啦

6月17日 09:01:04
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project