建立ARM+Linux應(yīng)用程序調(diào)試環(huán)境
1.下載gdb源代碼http://ftp.gnu.org/gnu/gdb/
2.配置安裝gdb+gdbser
$ tar jxvf gdb-6.6.tar.bz2
$ cd x/gdb
$ ./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v
--prefix用于指定安裝路徑
--target=arm-linux用于制定目標(biāo)環(huán)境的編譯
編譯,$ make
安裝,$ sudo make install
之后在x/bin文件夾下生成arm-linx-gdb可執(zhí)行文件.
$ cd gdbserver
配置文件:
$ ./configure --target=arm-linux --host=arm-linux
(--target=arm-linux表示目標(biāo)平臺,--host表示主機端運行的是arm-linux-gdb,不 需要配置—prefix,因為gdbserver不在主機端安裝運行)
$ make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
(這一步要指定你自己的arm-linux-gcc的絕對位置,相對的通常不行,提示make: arm-linux-gcc: Command not found,如果用的相對路徑,即直接賦值arm-linux-gcc,可采取make時傳遞參數(shù),也可以直接修改gdbserver目錄下的Makefile文件中的環(huán)境變量CC)
之后在gdbserver目錄下生成gdbserver可執(zhí)行文件.
可將它通過nfs拷貝到目標(biāo)板上運行.
如:mount –t nfs host:/friendly-arm/root /mnt –o ro,nolock
這里如果沒有加上選項–o ro,nolock無法正常mount.
@在目標(biāo)板上運行
(1)將要調(diào)試的文件和gdbserver放在同一個文件夾下
vivi>./gdbserverhost:port“待調(diào)試文件”
(2)在主機段執(zhí)行arm-linux-gdb “待調(diào)試文件”
(gdb)target remote client:port連接客戶機
注意:(1)在目標(biāo)機上通過gdbserver調(diào)試的程序在gdbserver運行的時候已經(jīng)運行了,并且其中不包含調(diào)試的符號信息,所以要想加入符號信息只能通過host運行的gdb加入含有調(diào)試信息的可執(zhí)行文件。
(2)剛開始的時候?qū)?/gdbserver下載到目標(biāo)機后不能運行,其主要原因就是所制作的網(wǎng)絡(luò)根文件系統(tǒng)缺少libthread_db.so.1庫文件。但是發(fā)現(xiàn)lib中并沒有該文件,只有一個鏈接文件,通過file命令查看:
[root@localhost lib]# file libthread_db.so.1
Libthread_db.so.1: symbolic link to libthread_db-1.0.so
發(fā)現(xiàn)該鏈接文件鏈接到libthread_db-1.0.so該庫文件,于是將文件libthread_db-1.0.so拷貝到根文件系統(tǒng),然后改名為Libthread_db.so.1,之后gdbserver能正常運行了.
3.安裝gdb圖形調(diào)試界面insight(gtk軟件包)
下載地址:http://sourceware.org/insight/版本為:insight-6.6.tar.bz2
$ tar–jxvfinsight-6.6.tar.bz2
$ cd insight-6.6
配置文件:
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/insight
配置選項的解釋同上.
編譯,$ make
安裝,$ sudomakeinstall
注意:在第一次編譯的時候老是出現(xiàn)問題,最后發(fā)現(xiàn)自己在裝RedHat9.0的時候為了節(jié)省磁盤空間沒有安裝gtk軟件包,所以編譯的時候會出錯。但是在裝了之后,再次編譯insight-6.8.tar.bz2版本,出現(xiàn)了X參數(shù)未初始化的錯誤。然后重新?lián)Q成insight-6.6.tar.bz2版本,編譯成功,安裝.
關(guān)于gdb遠程調(diào)試參見:http://codex.wordpress.org.cn/GDB_Manual_17_1
剩下需要解決,就是busybox在minicom下如何終止程序的運行。
評論