到http://www.gnu.org/software/gdb下载gdb-6.5.tar.bz2,gdbserver的源码包含在gdb-6.5.tar.bz2里。
解压
tar xjvf gdb-6.5.tar.bz2
进入gdb目录
cd gdb-6.5
编译配置
./configure --target=arm-linux --prefix=/opt/arm-gdb
其中--target指定针对的目标平台, --prefix指定编译后的安装目录。
接下来编译、安装
make
make install
加入环境变量
export PATH=$PATH:/opt/arm-gdb/bin
检查arm-linux-gdb的路径设置
arm-linux-gdb –v
如果提示版本信息,就表示环境变量设置成功。
进入gdbserver目录
cd gdb-6.5/gdb/gdbserver/
编译配置
./configure --target=arm-linux --host=arm-linux
其中--target指定针对的目标平台,--host指定编译后文件的运行环境。
编译
make CC=arm-linux-gcc
CC指定编译器的路径,由于gdbserver是运行在目标机上的, 所以在此我们要用arm-linux-gcc来编译
编译完后,会在目录下生成gdbserver的可执行文件。
编辑测试程序test.c
#include <stdio.h>
int main()
{
int i = 0;
while(i < 10)
{
printf("%d", i++);
}
return 0;
}
编译测试程序
arm-linux-gcc test.c –g –o test
通过nfs或者tftp下载gdbserver和test到目标机上,并更改文件属性,使之可执行
chmod a+x gdbserver
chmod a+x test
在目标机上启动gdbserver
./gdbserver 192.168.1.45:1111 test
192.168.1.45是目标机的ip地址,1111为gdbserver监听的端口号。
在宿主机上启动gdb。注意不是宿主机自带的gdb,而是我们编译好的gdb,名字为arm-linux-gdb。
再输入target remote 192.168.1.45:1111, 连接目标机上的gdbserver,注意ip和端口要与启动gdbserver时设置的一致。接下来的调试就和在普通linux上的gdb调试一样了。
其中, l(list):列出源码,b(break):设置断点,c(continue):继续执行,p(print):打印变量值。