国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

迅為i.MX6ULL開發(fā)板移植Gdb+Gdbserver調(diào)試

發(fā)布時(shí)間:2021-5-31 10:46    發(fā)布者:落風(fēng)
因?yàn)橛泻芏嘈』锇槭菑?a href="http://www.4huy16.com/keyword/單片機(jī)" target="_blank" class="relatedlink">單片機(jī)轉(zhuǎn)過來的,用慣了單片機(jī)使用JLINk來調(diào)試程序,換到Linux非常不習(xí)慣。確實(shí)是如此,如果能在Linux上能設(shè)置斷點(diǎn),單步調(diào)試,查看變量,那就再好不過了。那么接下來將教大家怎么在arm板上調(diào)試應(yīng)用代碼的方法。
首先,了解下基本的思路:
采用這種方式進(jìn)行遠(yuǎn)程調(diào)試,目標(biāo)系統(tǒng)必須包括gdbserver程序,宿主機(jī)也必須安裝gdb程序。一般Linux發(fā)行版中都有一個(gè)可以運(yùn)行的gdb,但我們不能直接使用該發(fā)行版中的gdb來做遠(yuǎn)程調(diào)試,而要獲取gdb的源代碼包,針對(duì)arm平臺(tái)做一個(gè)簡單的配置,重新編譯得到相應(yīng)的gdb,如armv4.
搭建環(huán)境
UBuntu版本:Ubuntu 12.04
交叉編譯器:arm-2009q3.tar.bz2
gdb版本:gdb-7.8.1.tar.gz
開發(fā)板硬件:i.MX6ULL 終結(jié)者
開發(fā)板系統(tǒng):支持ssh的busybox
注意事項(xiàng):如果大家下載的gdb版本比較高,那么Ubuntu的GCC就必須用4.8以上的版本。交叉編譯器要選擇和自己編譯的文件系統(tǒng)一致的編譯器,因?yàn)閎usybox的根文件系統(tǒng)用的是arm-2009q3,所以這里編譯gdb也使用這個(gè)編譯
搭建步驟
(1)第一步:下載gdb壓縮包
下載地址:http://ftp.gnu.org/gnu/gdb/ 這里我們下載的是gdb-7.8.1.tar.gz這個(gè)版本。
(2)第二步:編譯并安裝gdb
把gdb壓縮包放到ubuntu之后,我們進(jìn)入到解壓生成的文件,如圖 1示:

輸入以下命令:
./configure -target=arm-none-linux-gnueabi --prefix=/home/topeet/arm-linux-gdb/arm-linux-gdb生成Makefile。target為目標(biāo)平臺(tái),prefix為安裝路徑。

生成Makefile成功如圖 3所示:

輸入make,編譯gdb,編譯成功如圖 4所示:

輸入make install ,安裝gdb,一會(huì)我們?cè)趗buntu上啟動(dòng)的就是這個(gè)gdb,安裝成功如圖 5所示:

進(jìn)入gdb源碼下的gdb/gdbserver目錄,如圖 6所示:


輸入以下命令:
./configure -target=arm-none-linux-gnueabi --prefix=/home/topeet/arm-linux-gdb/arm-linux-gdbserver
生成Makefile,target為目標(biāo)平臺(tái),prefix為安裝路徑。

然后執(zhí)行make CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc命令,注意,這里交叉編譯器一定要寫絕對(duì)路徑。
編譯過程中會(huì)出現(xiàn)圖 8錯(cuò)誤:

我們打開gdb/gdbserver路徑下的config.h文件,注釋掉196行左右的HAVE_SYS_REG_H這個(gè)宏定義,然后保存退出。如圖 9所示:

打開gdb/gdbserver路徑下的linux-x86-low.c的C文件,注釋掉116行#include頭文件,然后保存退出。如圖 10所示:

再次編譯輸入make CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc,編譯成功如圖 11所示:

編譯完成后,使用make install 命令安裝,安裝完成后會(huì)在安裝路徑生成一個(gè)文件夾,如圖 12所示:

第三步,在ARM板上搭建遠(yuǎn)程調(diào)試環(huán)境
(1)把gdb/gdbserver下的gdbserver 拷貝到文件系統(tǒng)busybox的bin目錄下,然后打包燒寫生成的文件系統(tǒng)rootfs.tar.bz2
(2)編寫測試程序hello.c

編譯測試程序,編譯的時(shí)候要加-g參數(shù),編譯完成之后,我們把測試代碼通過SSH放在開發(fā)板上,然后再測試代碼所在的路徑下輸入以下命令在目標(biāo)板啟動(dòng)服務(wù)器,其中192.168.1.5為ubuntu的IP,8000為端口號(hào)。啟動(dòng)成功如圖 14所示:

再測試程序所在目錄啟動(dòng)ubuntu上的gdb,這里啟動(dòng)的gdb為我們剛剛安裝的gdb,我們輸入以下命令:
/home/topeet/arm-linux-gdb/arm-linux-gdb/bin/arm-none-linux-gnueabi-gdb hello

啟動(dòng)成功后如圖 15所示:

連接開發(fā)板,輸入以下命令,target remote 192.168.1.3:8000 192.168.1.3為開發(fā)板的IP,8000為端口號(hào)。

連接成功后開發(fā)板會(huì)打印以下信息,如圖 17所示:

接下來,我們就可以在ubuntu上使用命令來設(shè)置斷點(diǎn),單步調(diào)試開發(fā)板上的程序了,L 是顯示程序,b 7 是在第七行設(shè)置斷點(diǎn),info b 是查看斷點(diǎn),c 是運(yùn)行。

在串口控制臺(tái)可以看到對(duì)應(yīng)的打印信息

打斷點(diǎn)的方式主要有以下幾種:
break 函數(shù)名:在某個(gè)函數(shù)的入口處添加斷點(diǎn)
break 行號(hào):在指定行添加斷點(diǎn)
break文件名:行號(hào):在指定文件的指定行添加斷點(diǎn)
break行號(hào) if 條件:當(dāng)條件為真時(shí),指定行號(hào)的斷點(diǎn)生效。
查看我們打的斷點(diǎn),使用命令info breakpoints,可以看見我剛才打的斷點(diǎn)
刪除斷點(diǎn),使用命令delete斷點(diǎn)編號(hào)來完成
運(yùn)行程序,輸入命令run
 輸入命令:print i,命令格式:print 變量名稱。查看指定變量數(shù)值。
 我們也可以對(duì)變量i進(jìn)行監(jiān)控,可以輸入命令 watch i,命令格式:watch 變量名稱。對(duì)指定變量進(jìn)行監(jiān)控。.
next:單步運(yùn)行程序,不進(jìn)入子函數(shù)。
step:單步運(yùn)行程序,進(jìn)去子函數(shù)。
如果我們想繼續(xù)調(diào)試呢,可以輸入命令continue
退出調(diào)試。可以使用命令quit
總結(jié):
上面的命令也可以使用簡寫,如break可以簡寫成b,簡寫表如下:


本文地址:http://www.4huy16.com/thread-767853-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • Microchip第22屆中國技術(shù)精英年會(huì)——采訪篇
  • “芯”光璀璨,鵬城共賞——2025 Microchip中國技術(shù)精英年會(huì)深圳站回顧
  • 常見深度學(xué)習(xí)模型介紹及應(yīng)用培訓(xùn)教程
  • 技術(shù)熱潮席卷三城,2025 Microchip中國技術(shù)精英年會(huì)圓滿收官!
  • 貿(mào)澤電子(Mouser)專區(qū)
關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表