歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下建立arm-gdb調試環境

Linux下建立arm-gdb調試環境

日期:2017/2/28 16:20:55   编辑:Linux教程

一、下載gdb-6.4.tar.gz源代碼

http://ftp.gnu.org/gnu/gdb/

二、編譯 GDB

#tar zxvf gdb-6.4.tar.gz

2.1、編譯GDB Server

#cd gdb-6.4
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb
#make

注意: 這裡如果你用的是gcc-4.3.2的話,編譯可能會出錯!你可以改成 gcc-4.1 就可以順利編譯通過

編譯ARM用的GDB時出現error: no termcap library found錯誤的解決方法2009年03月28日 星期六 21:55在Ubuntu下編譯gdb時出現如下錯誤:

........

checking for library containing gethostbyname... none required
checking for library containing socketpair... none required
checking for library containing waddstr... no
checking for library containing dlgetmodinfo... no
checking for library containing tgetent... no
configure: error: no termcap library found
make[1]: *** [configure-gdb] 錯誤 1

解決方法:sudo apt-get install libncurses5-dev

安裝完後,在make就OK了!

#make install // 生成/usr/local/arm-gdb/bin

2.2、編譯GDB Client

#cd ./gdb/gdbserver
#export PATH=$PATH:/usr/local/arm-gdb/bin
#./configure --target=arm-linux --host=arm-linux
#vi config.h
//#define HAVA_SYS_REG_H //注釋此句
#make CC=arm-softfloat-linux-gnu-gcc //編譯用於目標機的stub程序 生成gdbserver是GDB客戶端程序,在板子上運行。

三、實戰調試

1.編輯文件

# vi gdbtest.c
1 #include <stdio.h>
2
3 int
4 func(int n){
5 int sum=0, i;
6 for (i=0; i<n; i++){
7 sum += i;
8 }
9 return sum;
10 }
11
12 int
13 main(void)
14 {
15 int i;
16 long result = 0;
17 for (i=0; i<=100; i++){
18 result += i;
19 }
20
21 printf("result[1-100] = %d \n", result);
22 printf("resutl[1-225] = %d \n", func(255));
23
24 return 0;
25 }
# arm-linux-gcc -g gdbtest.c -o gdbtest // 交叉編譯

2.下載文件到目標板: gdbtest和gdbserver

假設 host pc ip:192.168.1.45
board ip:192.168.1.180

將文件拷貝到目標板上:

先將gdbtest和gdbserver兩個文件拷貝到主機的/tftpboot目錄下

在目標板的Linux中運行:

#mount 192.168.1.108:/tftpboot /mnt/nfs
#cd /mnt/nfs
#ls

看是否有gdbtest和gdbserver兩個文件。

3.運行調試

client board:
#./gdbserver 192.168.1.45:1234 gdbtest // 目標板上運行gdbtest 監聽端口1234
host pc:
#cd /usr/local/arm-gdb/bin/
#copy gdbtest /usr/local/arm-gdb/bin/ // 將前面編譯的文件gdbtest拷貝到此目錄
#./arm-linux-gdb gdbtest
(gdb)target remote 192.168.1.180:1234 // 連接到開發板 成功後就可以進行調試
(gdb)list or l
(gdb)break func
(gdb)break 22
(gdb)info br
(gdb)continue or c // 這裡不能用 run
(gdb)next or n
(gdb)print or p result
(gdb) finish // 跳出func函數
(gdb) next
(gdb) quit

建立連接後進行gdb遠程調試和gdb本地調試方法相同

Copyright © Linux教程網 All Rights Reserved