GDB+GDBServer的安装

1. GDB

GDB安装在虚拟机Linux端,安装方法:

 用系统自带的

sudo apt-get install gdb

系统自带的安装在默认路径下,用which gdb查看安装路径:

查到是:/usr/local/bin/gdb

gdb-v查看版本是7.12.0.20161007

自己下载

 网址:https://sourceware.org/gdb/download/

我下载的是gdb-7.12.tar.gz,与系统安装的版本一致。

解压:

sky@debian:~/Downloads$ tar -xvfgdb-7.12.tar.gz

编译:

./configure --host=arm-linux-gnueabihf 生成makefile。此处要生成的是arm-linux交叉编译gdb

 make 按照makefile运行。

Note:开发板是ARM v7,编译统一是gnueabihf

Note:此处报错,ld有问题。解决方案:指定ld。

(make CC=arm-linux-gnueabihf-gcc

LD=arm-linux-gnueabihf-ld)

覆盖:

如果修改了文件,重新编译出gdb后,覆盖掉系统之前安装的gdb:

sky@debian:~/gdb/gdb-7.12/gdb$ sudo mvgdb /usr/local/bin/gdb

make install和这一步功能一样, 要看一下makefile文件里面的路径是不是我们改过源代码的gdb。

查看详细信息:

查看gdb是否是最新的

sky@debian:~/gdb/gdb-7.12/gdb$ l/usr/local/bin/gdb

显示:-rwxr-xr-x 1 sky sky 36567392 Aug 713:07 /usr/local/bin/gdb


2. GDBServer

GDBServer安装在目标板,但是目标板无法编译,需要在虚拟机上编译完成后将可执行文件下载到目标板。

下载gdbServer到目标板:

进入sky@debian:~/gdb/gdb-7.12/gdb/gdbserver$路径下有一个文件叫gdbserver的可执行文件,copy到MOXA里面

sky@debian:~/gdb/gdb-7.12/gdb/gdbserver$scp gdbserver [email protected]:/home/

运行:

在moxa运行gdbserver,出现详细信息证明前面的编译成功啦


3. GDB+GDBServer

开发板端监听

./gdbserver 192.168.3.127:2345 ./hello

虚拟机端Debug

gdb ./hello

target remote 192.168.3.127:2345

端口号要一致

成功啦!



Note:连接时出现问题,虚拟机端显示:Remote ‘g’ packet reply is too long

S:需要修改gdb/remote.c ,并重新安装gdb

wget http://ftp.gnu.org/gnu/gdb/gdb-7.12.tar.xztar -xf gdb-7.12.tar.xz

cd gdb-7.12/

============================解决上述错误的附加步骤=========================

vi gdb/remote.c

// 把status 1处的代码替换为status 2//

status 1

if(buf_len>2*rsa->sizeof_g_packet)

error (_("Remote 'g' packet replyis too long: %s"),rs->buf);

//status 2

if(buf_len >2*rsa->sizeof_g_packet)

{rsa->sizeof_g_packet=buf_len ;

for(i =0;i

{if(rsa->regs->pnum==-1)

continue;

if(rsa->regs->offset>=rsa->sizeof_g_packet)rsa->regs->in_g_packet=0;

else

rsa->regs->in_g_packet=1;}}

=========================================================================

./configure

make

sudo make install

sudo cp gdb/gdb /usr/bin

From


Note:vi查找:/+查找内容,n(next)向下查找,Shift n(N)向上查找

更改源代码后,需要重新编译覆盖gdb。

你可能感兴趣的:(GDB+GDBServer的安装)