嵌入式爱好者

GDBserver的搭建和使用-4418

2019-1-29 14:08| 发布者: 飞凌-unix| 查看: 1409| 评论: 0

类目: S5P4418/6818系列产品  >  Linux     文档编号: 251

gdb交叉调试环境的搭建和基本使用
一、在PC端编译安装arm-linux-gdb
1、安装必要的软件包 $sudo apt-get install texinfo libncurses5-dev m4 flex bison
2、创建arm-gdb的安装目录,解压、配置、编译、安装gdb源码 $sudo mkdir /opt/arm-gdb $tar xvf gdb-7.8.1.tar.gz $cd gdb-7.8.1 $./configure --target=arm-linux --prefix=/opt/arm-gdb $make $sudo make install
安装成功时会在/opt/arm-gdb/bin/下生成arm-linux-gdb可执行文件。
3、为arm-linux-gdb添加环境变量
使用vi或vim等编辑器打开/etc/profile文件 $sudo vim /etc/profile
在文件的末尾添加如下内容:
export PATH=/opt/arm-gdb/bin:$PATH
保存退出后在终端上执行如下命令: $source /etc/profile
二、在PC端编译gdbserver
进入在上一步完成arm-linux-gdb编译安装的gdb-7.8.1目录内: $cd gdb-7.8.1 $cd gdb/gdbserver $./configure --target=arm-linux --host=arm-cortex_a9-linux-gnueabi $make
编译成功会在此目录下生成gdbserver文件,这个文件会在下一步中被拷贝到nfs共享目录下,最终要在开发板上运行。
三、在Ubuntu主机上创建共享文件夹到ARM开发板
确保PC和开发板在同一个局域网内,确保自己要共享的PC上的文件夹以及所有文件都是777权限,关闭PC端防火墙。
在本手册测试环境中,以PC端ip:192.168.1.160,开发板ip:192.168.1.161的网络环境为例。
1、安装NFS协议: $sudo apt-get install portmap $sudo apt-get install nfs-kernel-server
2、创建PC上需要共享的目录: $sudo mkdir /share $sudo chmod -R a+wxr /share
3、使用vi或vim等编辑器打开/etc/exports文件: $vim /etc/exports
在exports文件的末尾添加如下内容后保存退出:
/share *(rw,sync,no_root_squash)
4、重新启动NFS服务 $sudo /etc/init.d/nfs-kernel-server restart
5、在PC上验证是否可以共享 $sudo mount -t nfs 192.168.1.160:/share /mnt
如果共享成功,可在/mnt下查看到/share下的文件。
6、开发板挂载PC端共享目录
在开发板的终端上执行如下命令: #mount -t nfs -o nolock 192.168.1.160:/share /mnt
如果共享成功,可在开发板的/mnt下查看到PC端上/share内的文件,至此,创建共享目录的步骤完成并挂载成功。
7、在PC端,把在第二步中编译生成的gdbserver文件拷贝到/share目录下: $sudo cp gdbserver /share/
四、使用arm-linux-gdb和gdbserver交叉调试
首先交叉编译需要调试的程序源文件,在此以gdbtest.c为例,注意在编译时需加上-g选项: $arm-cortex_a9-linux-gnueabi-gcc -g gdbtest.c -o gdbtest
编译生成gdbtest可执行文件,将此文件拷贝到PC端的/share/目录下,我们需要对它进行gdb交叉调试。
在开发板的终端执行: #cd /mnt #./gdbserver 192.168.1.160:5000 gdbtest
其中192.168.1.160为PC端IP地址,5000为通信端口,gdbtest为要调试的程序,用户可通过实际调试环境调整。
在PC端执行: $cd /share $arm-linux-gdb gdbtest
此时会进入到gdb调试环境,在此环境中执行如下命令: (gdb)target remote 192.168.1.161:5000
其中192.168.1.161为开发板IP地址,5000为开发板执行gdbserver时指定的通信端口,两端指定的通信端口号要保持一致。
在开发板终端可以看到应答信息为Remote debugging from host 192.168.1.160
至此,就可以在PC端上执行gdb调试命令来交叉调试程序了,调试方法基本与主机gdb调试方法一致,但需要注意的是不使用run来执行程序,因为执行完target remote 192.168.1.161:5000命令后,目标板上程序已经在运行,直接用continue命令即可运行程序。
五、gdb在线调试的基本命令
symbol-file 装入符号库文件,可以是用-g选项编译的可执行文件
list 列出程序源文件,简化命令为l
break 设置断点,例如b 10,即在源程序的第10行加入断点;b func,即在源程序的func函数加入断点,简化命令为b
continue 使程序继续执行,直到下一个中断点或程序结束,简化命令为c
print 可打印出程序中某个变量的值,例如在程序中定义了int i,则print i会打印出程序执行到当前时变量i的值,简化命令为p
next 程序执行到断点时中断执行,可以用next命令进行单步执行,简化命令为n
step 程序执行到断点时终端执行,可以用step命令进行单步执行进某一函数,简化命令为s
quit 退出gdb调试环境,简化命令为q

已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2024-11-22 11:40

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部