移植gdb到嵌入式的ipnc中,大多數人習慣使用printf調試,但是遇到像”segment fault“這的錯誤也是後就很難定位,這時候gdb的作用就體現出來了
在pc使用gdb調試應用程序前,應用程序編譯是需帶上 gcc -g參數,就是編譯帶有調試信息的程序,不然使用gdb是找不到程序的symbol的
在arm中使用gdb也不例外,也要加上arm_v5t_le-gcc -g參數,只不過,arm上linux不同於pc,嵌入式的gdb採用這樣的調試方式:
在arm中運行gdbserver
在pc上運行gdbserver對應的arm-linux-gdb,這樣的方式來調試程序。
所以的調試操作均在pc上完成,但是程序的輸出還是在arm上。
現在來移植gdb到dm368上
1、下載gdb源碼,目前的最高版本的gdb-7.5,下載地址:http://www.gnu.org/software/gdb/download/
2、解壓到合適的文件夾下,注意不要放到window與linux共享的目錄下即可:tar -xvzf gdb-7.5.tar.gz
3、進入gdb-7.5源碼目錄,然後配置編譯arm-linux-gdb
我的配置是這樣的:./configure --target=arm-linux --prefix=/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5 -v
target是指編譯的目標平臺
prefix是指安裝編譯好的程序目錄,我將它安裝到arm_v5t_le工具鏈的目錄。
這裏注意了,現在配置編譯的不是gdbserver,而是gdbserver對應的需要運行在主機pc上的arm-linux-gdb,雖然linux上已經有gdb命令,但是這個gdb命令式沒法跟gdbserver交互的。
編譯成功後會在prifix設定的目錄下產生arm-linux-gdb可執行程序,如圖
target_board 和readme是我自己創建的。
4、進入gdb-7.5/gdb/gdbserver目錄,配置,然後交叉編譯運行在arm上的gdbserver
4.1在交叉編譯gdbserver之前,先進行一些設置:
添加剛纔編譯好的arm-linux-gdb到PC linux的PATH中
PATH="/opt/dm36x/mv_pro_5.0/montavista/pro/devkit/arm/v5t_le/gdb-7.5/bin:$PATH"
4.2配置
./configure --target=arm-linux --host=arm-linux
4.3修改config.h
編譯是會產生一個錯誤,說找不到sys/reg.h
所以這裏修改一下config.h,不要去使用reg
#vim config.h
//#define HAVA_SYS_REG_H //註釋此句
4.4交叉編譯
make CC=arm_v5t_le-gcc
5、將交叉編譯好的gdbserver複製到目標文件系統的/usr/locaol/bin目錄下,其他地方也可以,只要能在shell中找到gdbserver即可
測試:
1、隨便寫一個c文件,然後編譯
arm_v5t_le-gcc -g test.c
得到a.out,複製到目標文件系統中
2、在目標板上執行
gdbserver 192.168.1.227:1234 a.out
192.168.1.227爲目標板ip地址,1234是沒有被佔用的tcp端口
意思就是創建一個調試服務器,一邊主機pc上的arm-linux-gdb能夠連接這個服務器來調試a.out
3、在主機pc上執行
arm-linux-gdb a.out
然後在gdb的shell中輸入
target remote 192.168.1.227:1234
連接成功後目標板上會打印連接信息,如圖
至此,就可以按照通常gdb的命令調試程序啦
附錄1:調試時出現的警告
warning: `/lib/libc.so.6': Shared library architecture unknown is not compatible with target architecture arm.
warning: Could not load shared library symbols for /lib/ld-linux.so.3.
Do you need "set solib-search-path" or "set sysroot"?
忽略,目前沒有發現影響什麼。
附錄2:gdb調試手冊和gdb調試命令的pdf下載,這兩篇是我在網上找的,覺得比較好
gdb調試手冊:http://www.kuaipan.cn/file/id_48923272389085122.html
gdb調試命令:http://www.kuaipan.cn/file/id_48923272389085121.html