gdb和gdbserver调试

编译gdb

http://www.gnu.org/software/gdb下载gdb-6.5.tar.bz2gdbserver的源码包含在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

进入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下载gdbservertest到目标机上,并更改文件属性,使之可执行

chmod a+x gdbserver

chmod a+x test

在目标机上启动gdbserver

./gdbserver 192.168.1.45:1111 test

192.168.1.45是目标机的ip地址,1111gdbserver监听的端口号。

 

在宿主机上启动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):打印变量值。

 

你可能感兴趣的:(gdb和gdbserver调试)