keil查看局部變量的值(keil用debug怎么查看變量)
在Keil中要看個(gè)別變量的值方法如下1寄存器的值,可以在Register串口中查看 2定時(shí)器IO口串口狀態(tài)可以在”Peripherals“中點(diǎn)擊相應(yīng)的選項(xiàng)查看 3普通變量的值,可以直接將鼠標(biāo)移動(dòng)到變量名上方,會(huì)自動(dòng)顯示當(dāng)前執(zhí)行中。
1簡單的辦法是將鼠標(biāo)放置變量上就可以看見了2選擇變量名,右鍵添加在watch窗口3局部變量在locals窗口中可以看到。
簡單來說可以 Add to Watch 添加到Watch窗口不過你需要明確這個(gè)變量的作用域和生命期對于很多臨時(shí)變量,如果你斷點(diǎn)過早或者過晚的話是無法觀察到其數(shù)值的Watch窗口可以查看某個(gè)符號(hào)不僅限于變量的內(nèi)容和類型。
很簡單啊被優(yōu)化掉了全在寄存器里,沒有在棧里面所以調(diào)試信息無法描述了自然調(diào)試器也無法watch想看就關(guān)掉優(yōu)化em18。
keil無法觀察局部變量keil觀察局部變量的時(shí)候,發(fā)現(xiàn)總是顯示not in scope,是優(yōu)化級(jí)別過高,降低優(yōu)化級(jí)別即可。
對于通用C語言, 局部變量沒賦值的話,值是隨機(jī)的不過你這個(gè)是嵌入式,keil 默認(rèn)初始值會(huì)是0 所以,在你的這個(gè)程序中,a的初始值是0。
8匯編窗口查看匯編代碼9堆棧局部變量顯示當(dāng)前函數(shù)局部變量及其值,方便查看10觀察窗口MDK5提供了2個(gè)觀察窗口,按下按鈕會(huì)彈出一個(gè)顯示變量的窗口,輸入你所想要觀察的變量表達(dá)式,即可查看其值11內(nèi)存查看窗口MDK。
unsigned int i,jfori=0 ilttime i++forj=0 jlt1000 j++ void mian unsigned int temp =0x00while1 ifkey == 0 delay20適當(dāng)延時(shí),消除按鍵抖動(dòng),自己看實(shí)際情況。
你把int x,yx,y定義為局部變量 這個(gè)語句放到程序開始,就是 void main 后面 不是每個(gè)編譯器都是必須在程序開始定義變量的,很多編譯允許在使用的時(shí)候才定義變量但keil就是一個(gè)要在程序開始定義變量的編譯器。
應(yīng)該不會(huì)的你用是不是用KEIL自帶的仿真看的啊因?yàn)槟愕某绦虿还苷{(diào)用program_1還是program_2,這幾個(gè)子函數(shù),只要調(diào)用就進(jìn)入死循環(huán),其他的臨時(shí)變量你看不到,它們是沒有確定的值你說“都是為上一個(gè)執(zhí)行子。
可以認(rèn)為,在debug下,調(diào)試環(huán)境會(huì)自動(dòng)幫你清0,但脫離調(diào)試環(huán)境這些沒有賦初值的變量就不靠譜了。
就算默認(rèn)是0也別這樣,bug就是這樣產(chǎn)生的,不過除了部分寄存器,大部分上電都為0。
不必要呀,寫一段再定義出可以,但是這時(shí)定義的變量只能下面的語句中使用。
剛開始學(xué)的時(shí)候也像你這樣寫,后面發(fā)現(xiàn)有時(shí)候因?yàn)樽雍瘮?shù)使用了這樣的簡易變量容易與主程序中的同一變量在編譯過程中給優(yōu)化成全局變量后就不再這樣寫了。
看你用什么語言寫了,如果用匯編的話不用定義,直接用就行了,如p10p22如果用C編寫的話,應(yīng)該先把頭文件加進(jìn)來,#includeltreg51h,加進(jìn)來后,如果不定義端口的話P1P1^1,這里的P是大寫的。
到UV3的安裝目錄下如 C\Keil\uv3,找到 CARMC_DefaultINI文件,用記事本打開,將里面的內(nèi)容全部復(fù)制下來,再找到 CARMCini文件,將其打開,用剛才復(fù)制的內(nèi)容將CARMCini中的所有內(nèi)容全部 覆蓋掉,保存,關(guān)閉重新。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請注明出處。