使用gdb搭建嵌入式Linux調試環境,使用網絡與開發板通信,調試應用程序
一、下載gdb源碼
下載地址:ftp://ftp.gnu.org/gnu/gdb/
我使用的版本爲:gdb-7.7.1.tar.gz
二、編譯gdb client
(1)tar xvzf gdb-7.7.1.tar.gz
(2)./configure --target=arm-linux --prefix=/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client
(其中編譯、安裝後的可執行文件放到/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client,這個目錄可自定義)
(3)make
(4)make install
(5)在目錄/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/下arm-linux-gdb就爲在pc端運行的調試工具,可以通過
export PATH=$PATH:/home/shirf/my_explore/linux_explore/debug_type/gdb_file/gdb_client/bin/講該目錄添加到環境變量中。
三、編譯gdb servercd
(1)還是進入解壓完的gdb-7.7.1下的gdb/gdbserver/
(3) ./configure --target=arm-linux --host=arm-linux
(4)vi config.h
註釋:#define HAVA_SYS_REG_H 變爲//#define HAVA_SYS_REG_H
(5)make CC=arm-none-linux-gnueabi-gcc(其中arm-none-linux-gnueabi-gcc爲我的編譯器)
(6)gdbserver即爲運行在板子上的gdb
四、實戰
(1)源碼
#include <stdio.h>
int
func(int n){
int sum=0, i;
for (i=0; i<n; i++){
sum += i;
}
return sum;
}
int
main(void)
{
int i;
long result = 0;
for (i=0; i<=100; i++){
result += i;
}
printf("result[1-100] = %d /n", result);
printf("resutl[1-225] = %d /n", func(255));
return 0;
}
(2)編譯源碼
vi arm_gdb_test.c 並且複製源碼
arm-none-linux-gnueabi-gcc -g arm_gdb_test.c -o arm_gdb_test
(3)複製arm_gdb_test和gdbserver
我是nfs文件系統與板子建立共享目錄方式,進行文件複製
(4)開發板運行應用程序
./gdbserver 192.168.0.103:12340 arm_gdb_test
192.168.0.103爲我PC機地址,12340爲臨時gdb使用的端口,可以自己指定
其實可以將192.168.0.103:12340 變爲*:12340,通過netstat -an 發現開發板建立一個TCP監聽端口爲12340的套接字,
這個套接字可以接收任何地址的請求。
(5)在PC端調試程序
將/home/shirf/my_explore/e9_platform/arm_gdb/gdb_bin/bin/arm-linux-gdb複製到PC端生成的可執行文件處,用於調試用
./arm-linux-gdb arm_gdb_testtarget remote 192.168.0.200:12340(用於鏈接開發板)
此時就可以按照gdb方式調試應用程序了。