您好,歡迎進(jìn)入深圳市穎特新科技有限公司官方網(wǎng)站!
第一個問題:調(diào)試時候想實時查看某一變量變化?
view 菜單下的 watch windows,全局變量才能查看
比如要查看u8 adcx的值變化,如下:
全速運行后,如下:
無法查看!什么問題?
該變量非全局變量!
解決辦法:
必須是當(dāng)前斷點處所在的函數(shù)里面有這個參數(shù)才行,或者是全局變量.
將變量adcx改為全局變量:
調(diào)試狀態(tài)下,鼠標(biāo)選中變量后點右鍵,彈出的菜單有增加到變量窗口一欄,添加到watch #1 watch #2都可以。
函數(shù)里面的局部變量用j-link硬件調(diào)試,看不到那些值嗎?
當(dāng)然可以看
有個Call Stack的窗口,就可以看當(dāng)前函數(shù)里面的所有變量值.
在call stack的窗口上看不到值 顯示<not in scope>,是什么意思?
意思就是不再范圍。。。
無法顯示。
加violate關(guān)鍵字。
請問怎么加啊 violate int a=0;下面都是錯誤了
看局部變量的值,你在該局部變量所在的函數(shù)里,打個斷點,程序運行到該位置了,才能顯示局部變量的值。
第二個問題:Watch1窗口中變量adcx值不能實時顯示?
解決方法:
調(diào)試狀態(tài)下,勾上View->Periodic Window Update
要的不是這個顯示,是要提高顯示的刷新頻率
第三個問題:調(diào)試時候如何查看局部變量?
watch框內(nèi)的變量只有在當(dāng)前變量作用域的才可以添加,例如全局變量。局部變量即使添加后,在下次調(diào)試時也會從watch窗口移除,改到locals窗口內(nèi)顯示。locals窗口是查看當(dāng)前函數(shù)處內(nèi)部變量值得窗口。
watch框內(nèi)的變量只有在當(dāng)前變量作用域的才可以添加,例如全局變量。局部變量即使添加后,在下次調(diào)試時也會從watch窗口移除,改到locals窗口內(nèi)顯示。這個 ' 符號似乎是表示該變量是上次調(diào)試時定義的,好像沒其他什么作用。做過測試,只要成功被記錄進(jìn)watch窗口的全局變量,即使該量的物理地址發(fā)生了變化,下次調(diào)試時調(diào)試器也能準(zhǔn)確跟蹤到,并在watch內(nèi)刷新結(jié)果。locals窗口是查看當(dāng)前函數(shù)處內(nèi)部變量值得窗口。不要被誤導(dǎo)。如果在WATCH窗口看內(nèi)部變量,會是錯誤的。誤導(dǎo)你的。。。。。。。。。。!
我的理解:Call Stack + Local窗口變量自動的添加,取決于程序設(shè)置斷點停止的位置有哪些局部變量和顯示停止時刻的值。斷點作用域改變,窗口中的變量名也隨之改變。程序運行狀態(tài)無法顯示。
上面圖片源自于:KEIL help文檔
當(dāng)進(jìn)入程序狀態(tài)時,觀察窗口默認(rèn)的頁面是“l(fā)ocals",這個窗口頁面會動態(tài)顯示當(dāng)前模塊變量(即局部變量和全局變量),一旦模塊變了(即 域 變了),屬于這個模塊(域)的局部變量就不會在在這窗口頁面出現(xiàn)的。所以說這個窗口頁面是動態(tài)顯示就是這個原因。 觀察窗口的其它頁面,如"watch #1"等等,這里是觀察指定的變量的地方,可以指定任何一個!,如:PC。當(dāng)指定某一局部變量時,如果指定的這一時刻沒有定義這個變量,這個指定變量就顯示為“?????”,當(dāng)定義后,它就有值。如果有兩個同名的變量,有兩種情況。第一:域窄的被域廣的取當(dāng),即不能顯示域窄的變量。第二:域沒有關(guān)系,第一次出現(xiàn)的局部變量被顯示,以后的同名變量不能被顯示。 調(diào)試狀態(tài)下,鼠標(biāo)選中變量后點右鍵,彈出的菜單有增加到變量窗口一欄,添加到watch #1 watch #2都可以。 call stack是調(diào)用堆棧里的值。
掃碼關(guān)注我們
傳真:0755-82591176
郵箱:vicky@yingtexin.net
地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤豐創(chuàng)業(yè)園A棟2樓A08