一、代碼及進(jìn)入調(diào)試之前相關(guān)錯(cuò)誤及解決
1.1 未定義錯(cuò)誤(identifier "XXXX" is undefined)
出現(xiàn)此類(lèi)錯(cuò)誤主要有以下幾方面的原因及解決辦法如下:
未包含相關(guān)函數(shù)的頭文件,添加對(duì)應(yīng)頭文件即可。
變量的使用在變量定義之前,在C語(yǔ)言中,編譯是從上到下進(jìn)行的,故而無(wú)法找到變量定義,從而報(bào)錯(cuò),因此在編程之時(shí)需要注意,不要把程序調(diào)用的內(nèi)容放在定義之前。
引入頭文件錯(cuò)誤、未在keil工程中添加頭文件路徑,導(dǎo)致在編譯的時(shí)候找不到對(duì)應(yīng)的頭文件。
1.2 無(wú)法下載程序,識(shí)別不到目標(biāo)板
出現(xiàn)此類(lèi)錯(cuò)誤主要有以下幾方面的原因及解決辦法如下:
當(dāng)下載程序失敗可從以下幾個(gè)方面進(jìn)行查找,通過(guò)此電腦右鍵 -> 管理 -> 查看是否存在下載器相關(guān)的設(shè)備,如:AT_LINK,ST_LINK。若沒(méi)有則需要安裝相應(yīng)調(diào)試器版本的驅(qū)動(dòng)。
檢查調(diào)試器和單片機(jī)下載口的接線。
檢查單片機(jī)供電和開(kāi)發(fā)板本身。
選擇正確的下載器類(lèi)型,如:CMSIS_DAP
1.3 keil報(bào)錯(cuò)last line of file ends without a newline
打開(kāi)錯(cuò)誤提示中出現(xiàn)的文件,將光標(biāo)放置在文章最后,點(diǎn)擊回車(chē)即可,可以多點(diǎn)幾下。避免此類(lèi)錯(cuò)誤可以在編寫(xiě).c和.h文件時(shí)直接在文件末尾添加幾個(gè)空行。
1.4 變量重復(fù)定義
編譯時(shí)出現(xiàn)變量在2個(gè)或多個(gè)文件中重復(fù)定義有兩個(gè)原因,一是該變量確實(shí)重復(fù)定義了,二是頭文件重復(fù)包含。針對(duì)此類(lèi)原因?qū)Υa進(jìn)行檢查即可。PS:在編程時(shí)一定注意頭文件的包含,養(yǎng)成良好的編程習(xí)慣?。?!
1.5 keil報(bào)錯(cuò):function "xxx" was referenced but not defined
出現(xiàn)此類(lèi)問(wèn)題多是頭文件或源文件中“xxx”變量定義為靜態(tài)變量,只要去掉變量定義時(shí)的static即可。
1.6 ErrorNo space in execution regions...
出現(xiàn)此類(lèi)問(wèn)題的原因是程序大小或數(shù)據(jù)大小超出分配內(nèi)存空間導(dǎo)致的,可重新分配內(nèi)存空間或優(yōu)化代碼。還有一種可能是未激活keil導(dǎo)致的,注冊(cè)激活keil即可。
keil破解激活可參考此篇文章:Keil5最新注冊(cè)機(jī)到2032_keil5注冊(cè)機(jī)-CSDN博客
二、調(diào)試相關(guān)
2.1 退出調(diào)試,軟件卡死
此問(wèn)題主要針對(duì)5.38之后的版本,在此之前的版本不會(huì)出現(xiàn)此類(lèi)現(xiàn)象。此問(wèn)題是keil的軟件本身的BUG導(dǎo)致。只能待官方解決,但此BUG在我們的使用過(guò)程中是可以避免的。那我們?cè)撊绾伪苊饽兀恐灰谖覀兺顺稣{(diào)試界面之前,取消所有斷點(diǎn)即可,但是在實(shí)際使用中發(fā)現(xiàn)有時(shí)候沒(méi)有斷點(diǎn)也會(huì)出現(xiàn)此類(lèi)現(xiàn)象,那是為什么呢?因?yàn)樵谕顺鲋斑M(jìn)行過(guò)單步調(diào)試,導(dǎo)致雖然沒(méi)有設(shè)置斷點(diǎn),但是軟件認(rèn)為存在斷點(diǎn)導(dǎo)致的,保險(xiǎn)起見(jiàn),每次退出調(diào)試之前,點(diǎn)擊菜單欄的殺死所有斷點(diǎn)選項(xiàng)即可。
2.2 keil里無(wú)法進(jìn)行 go to 的跳轉(zhuǎn)
問(wèn)題:no browse information available in’工程目錄’ check-[target-options][output][browse information] then rebuild the target!
解決:選中工程目錄下的target1 -> 點(diǎn)擊右鍵,-> option for target ‘target1’-> 在彈出的對(duì)話(huà)框中選擇output選項(xiàng)卡 -> 勾選Browse information 選項(xiàng) -> 重新編譯工程即可
2.3 keil無(wú)法跳轉(zhuǎn)到函數(shù)和變量定義
問(wèn)題:無(wú)法跳轉(zhuǎn)到定義,提示錯(cuò)誤 “no browse info for symbol in this context“
解決:把工程移到不包含中文的路徑下進(jìn)行編譯使用。檢查編譯器版本和工程版本是否一致,若不一致則在keil中選擇一致的編譯器版本,重新編譯即可。若還不行記得勾選[Use Micro LIB]。
2.4 keil無(wú)法下載個(gè)別文件
問(wèn)題:“xxx.s” could not be opened/could not load file“***.axf”
解決:上述問(wèn)題出現(xiàn)的原因是MDK查找路徑太長(zhǎng),我們縮短相關(guān)文件路徑即可。
2.5 Debug模式,某些語(yǔ)句不能設(shè)置斷點(diǎn)
解決:上述問(wèn)題出現(xiàn)的原因是編譯優(yōu)化太高導(dǎo)致的,我們將keil的優(yōu)化等級(jí)改為default或者最低即可,這樣每一個(gè)運(yùn)行的地方都可以打斷點(diǎn)。
2.6 Cannot access target. Shutting down debug session.
解決方法如下:勾選target選項(xiàng),工程路徑不包含中文即可。
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136680 -
keil
+關(guān)注
關(guān)注
68文章
1212瀏覽量
166838 -
代碼
+關(guān)注
關(guān)注
30文章
4779瀏覽量
68519
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論