加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

gdb+gdbserver实践笔记

发布时间:2020-12-15 05:07:22 所属栏目:百科 来源:网络整理
导读:原理:在主机上远程调试运行在开发板上的程序。gdb客户端运行在主机上,gdbserver运行在开发板上。 准备工作: 1.从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载gdb7.4源码包 2.安装相关软件包:???? ??? sudo apt-get install texinfo? ??

原理:在主机上远程调试运行在开发板上的程序。gdb客户端运行在主机上,gdbserver运行在开发板上。

准备工作:

1.从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载gdb7.4源码包

2.安装相关软件包:????

??? sudo apt-get install texinfo?
????sudo apt-get install libncurses5-dev?
?? sudo apt-get install m4
?? sudo apt-get install flex?
?? sudo apt-get install bison
?
在rehat中libncurses5-dev?对应的软件包为ncurses-devel.如:ncurses-devel-5.7-3.20090208.el6.i686
3.编译gdb

主目录:cd gdb7.4/
./configure --target=arm-vfp-linux-gnu --prefix=/home/work/gdbserver/ -v
到/home/work/gdbserver/bin目录下:file一下,发现是x86型的可执行文件
到.bash_profile目录下添加目录/home/work/gdbserver/bin到PATH变量中

cd gdb7.4/gdb/gdbserver
./configure --target=arm-vfp-linux-gnu --host=arm-vfp-linux-gnu
vi config.h
//#define HAVA_SYS_REG_H //注释此句
make CC=arm-vfp-linux-gnu-gcc
在此目录中生成gdbserver可执行文件,file一下,发现是arm类型的可执行文件

4.测试
使用nfs将测试文件挂载到开发板上
开发板:
mount -t nfs192.168.1.104:/home/test2 ?-o nolock???????????? /mnt/
在主机上将所需的gdbserver和gdbtest测试程序拷贝到test2目录下
编译gdbtest时,要加入-g选项:arm-vfp-linux-gnu-gcc -g gdbtest.c -o gdbtest
然后:./gdbserver 192.168.1.104:1234 gdbtest
192.168.1.104为开发板上IP,1234为开发的端口,查看端口命令netstat -anp
主机:
arm-vfp-linux-gnu-gdb gdbtest
target remote 192.168.1.104:1234
即进入调试。注意,这个gdb没有run命令,可暂用c代替。
?
遇到的问题:
?

?
?
两个问题,一个是关于XML的,一个是关于ld-linux.so.2的。在网上查了好长时间,似乎没有什么特别好的能解决
关于第二个问题,有人建议这样做:
gdb) set solib-absolute-prefix /home/test/toolchain/bfin-linux-uclibc/bfin-linux-uclibc/runtime/lib:/home/test/kernel/uclinux-dist/staging/usr/lib
(这里的路径要换成你的库文件路径)
(gdb) set solib-search-path /home/test/toolchain/bfin-linux-uclibc/bfin-linux-uclibc/runtime/lib:/home/test/kernel/uclinux-dist/staging/usr/lib
(这里的路径要换成你的库文件路径)

查看一下你的共享库,看看是不是指向正确的地方:
(gdb) info sharedlibrary
From? ?? ???To? ?? ?? ? Syms Read? ?Shared Object Library
0x00248c78??0x00269b34??Yes? ?? ?? ?/home/test/kernel/uclinux-dist/staging/usr/lib/libeXosip2.so.4
0x00c88310??0x00c8834c??Yes? ?? ?? ?/home/test/toolchain/bfin-linux-uclibc/bfin-linux-uclibc/runtime/lib/libresolv.so.0
0x02628490??0x02682ae4??Yes? ?? ?? ?/home/test/kernel/uclinux-dist/staging/。。。。。。。。
但是,我试了没有效果。我的ld-linux.so.2 yes后面多了个(*)然后,提示:(*): Shared library is missing debugging information.
再从网上查,说是少了debug的symbol,也有说是交叉编译器的版本与lib库的版本不匹配。总之,未能解决
?
?
?
改进意见:
?
1.关于gdb+gdbserver有人说只能调试小的程序,建议直接将gdb移植到开板中去。
2.给gdb+gdbserver这种调试模式加个IDE,如DDD,insight
?insight下载地址: ftp://sourceware.org/pub/insight/releases
?
以上内容参考来自网络,有部分直接复制粘贴来的。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读