keil查看局部變量(keil調(diào)試查看變量的值)
在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í)行中;keil無(wú)法觀察局部變量keil觀察局部變量的時(shí)候,發(fā)現(xiàn)總是顯示not in scope,是優(yōu)化級(jí)別過(guò)高,降低優(yōu)化級(jí)別即可;簡(jiǎn)單來(lái)說(shuō)可以 Add to Watch 添加到Watch窗口不過(guò)你需要明確這個(gè)變量的作用域和生命期對(duì)于很多臨時(shí)變量,如果你斷點(diǎn)過(guò)早或者過(guò)晚的話是無(wú)法觀察到其數(shù)值的Watch窗口可以查看某個(gè)符號(hào)不僅限于變量的內(nèi)容和類型;當(dāng)進(jìn)入程序狀態(tài)時(shí),觀察窗口默認(rèn)的頁(yè)面是“l(fā)ocalsquot,這個(gè)窗口頁(yè)面會(huì)動(dòng)態(tài)顯示當(dāng)前模塊變量即局部變量和全局變量,一旦模塊變了即 域 變了,屬于這個(gè)模塊域的局部變量就不會(huì)在在這窗口頁(yè)面出現(xiàn)的所以說(shuō)這個(gè)窗口;在keil中,編寫C語(yǔ)言程序,當(dāng)我在一個(gè)函數(shù)中使用了一個(gè)變量局部變量,那么在這個(gè)函數(shù)結(jié)束退出的時(shí)候,這個(gè)變量對(duì)應(yīng)的內(nèi)存應(yīng)該會(huì)被釋放掉,以方便后面的程序使用吧可是我在編程的時(shí)候發(fā)現(xiàn),好像并不是這樣啊我在局部。
不必要呀,寫一段再定義出可以,但是這時(shí)定義的變量只能下面的語(yǔ)句中使用;你把int x,yx,y定義為局部變量 這個(gè)語(yǔ)句放到程序開始,就是 void main 后面 不是每個(gè)編譯器都是必須在程序開始定義變量的,很多編譯允許在使用的時(shí)候才定義變量但keil就是一個(gè)要在程序開始定義變量的編譯器;unsigned int i,j是可以放在main函數(shù)的,前提是這個(gè)變量不需要定義為全局變量,而是main函數(shù)的局部變量sbit led1=P1^0應(yīng)該是不可以放在main函數(shù)里面,這個(gè)東西映射端口寄存器的地址。
在small_rtos中,變量在對(duì)用的任務(wù)中定義,以任務(wù)為單位進(jìn)行調(diào)用,存儲(chǔ)方式你可以分析small_rtos中數(shù)據(jù)結(jié)構(gòu)定義~~~os_cfgh中定義的常量有如下信息define OS_Q_MEM_SEL xdata * 消息隊(duì)列存儲(chǔ)空間選擇,keil c51有;就算默認(rèn)是0也別這樣,bug就是這樣產(chǎn)生的,不過(guò)除了部分寄存器,大部分上電都為0;很簡(jiǎn)單啊被優(yōu)化掉了全在寄存器里,沒有在棧里面所以調(diào)試信息無(wú)法描述了自然調(diào)試器也無(wú)法watch想看就關(guān)掉優(yōu)化em18。
如果變量在函數(shù)外部 或者函數(shù)內(nèi)部用static修飾,那變量屬于靜態(tài)存儲(chǔ),編譯的時(shí)候就已經(jīng)分配好空間了,有初始值,類似于靜態(tài)變量;其他環(huán)境我不清楚,反正在C51里,變量定義之前,不允許有執(zhí)行語(yǔ)句的存在我的C語(yǔ)言是在VC++ 的控制臺(tái)下學(xué)習(xí)的,剛轉(zhuǎn)到51時(shí),也曾經(jīng)犯過(guò)你這種錯(cuò)誤,當(dāng)時(shí)找了很久才發(fā)現(xiàn)C51,包括 Keil在內(nèi)的其他單片機(jī)的C語(yǔ)言,都不允許;1簡(jiǎn)單的辦法是將鼠標(biāo)放置變量上就可以看見了2選擇變量名,右鍵添加在watch窗口3局部變量在locals窗口中可以看到。
8匯編窗口查看匯編代碼9堆棧局部變量顯示當(dāng)前函數(shù)局部變量及其值,方便查看10觀察窗口MDK5提供了2個(gè)觀察窗口,按下按鈕會(huì)彈出一個(gè)顯示變量的窗口,輸入你所想要觀察的變量表達(dá)式,即可查看其值11內(nèi)存查看窗口MDK。
掃描二維碼推送至手機(jī)訪問(wèn)。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。