OpenWrt之GdbServer

你的名字 2023-06-15 06:47 252阅读 0赞

Openwrt GNU Debugger(GDB)

第一步

首先make menuconfig, 选择gdb相关选项。

添加 gdb。(可以在路由器开发板调试,空间有限所以不建议)。
Advanced configuration options (for developers) → Toolchain Options → Build gdb

添加 gdbserver
Development → gdbserver 如果位置不一样/搜一下找到对应位置

第二步

在需要调试的包(package)的Makefile增加调试选项
TARGET_CFLAGS += -ggdb3
或者:
单独编译包时 (建议)
make package/xxxxx/{clean,compile} V=s STRIP=/bin/true CONFIG_DEBUG=y

或者:
使能debug选项:make menuconfig
Global build settings > Compile packages with debugging info

第三步

将编译好的固件传到目标板上,并安装。

  1. tftp -gr gdbserver_8.3.1-1_mipsel_24kc.ipk 192.168.5.55
  2. tftp -gr xxx.ipk 192.168.5.55
  3. opkg install gdbserver_8.3.1-1_mipsel_24kc.ipk
  4. opkg install xxx.ipk

第四步

在目标板上(OpenWRT路由)上开启gdbserver
gdbserver :9000 /bin/hellogdb

gdbserver --once --remote-debug :9000 /usr/bin/hellogdb

第五步

在编译主机上开启gdb(假如调试 hellogdb)
./scripts/remote-gdb 192.168.x.x:9000 ./build_dir/target-*/hellogdb/hellogdb

./scripts/remote-gdb 192.168.5.84:9000 ./build_dir/target-mipsel_24kc_musl/xxx/xx

实操

编译烧写固件
make menuconfig 添加gdbserver选项,gdb不选,意义不大。然后编译烧写固件。
在这里插入图片描述
编译安装包
写hellogdb示例并在menuconfig中选中,参考OpenWrt添加软件包之二helloworld实例
这里仿照写为hellogdb
在这里插入图片描述

(上述第二步 一、二种方式都可以,第三种没试过)。
两个Makefile都可以,为测试方便直接以参数形式写入src/Makefile.
在这里插入图片描述
然后menuconfig选中编译
在这里插入图片描述
选为M,不编译进内核
在这里插入图片描述
编译make V=s package/hellogdb/compile如果没有在Makefile中写则make V=s package/hellogdb/compile CONFIG_DEBUG=y
拷贝openwrt/bin/ramips/packages/base/hellogdb_xxx.ipk到路由器安装opkg install hellogdb_*.ipk
然后执行gdbserver :9000 /bin/hellogdb
在这里插入图片描述
主机上执行(注意必须在同一网段)ip为路由器ip./scripts/remote-gdb 192.168.x.x:9000 ./build_dir/target-mipsel*/hellogdb/hellogdb
设置断点 执行下一步:
在这里插入图片描述
成功。注意调试在主机,打印在路由器上。
monitor exit 关闭退出gdbserver

发表评论

表情:
评论列表 (有 0 条评论,252人围观)

还没有评论,来说两句吧...

相关阅读

    相关 OpenWrtddns

    OpenWrt之ddns DDNS原理 利用DNS可以将域名解析为IP地址,从而实现使用域名访问网络中的主机。但是DNS仅仅提供了域名和IP地址之间的静态对应关系,

    相关 OpenWRTprocd服务

    简介 Openwrt 支持模块化编程,增加新功能非常简单。但是一些基础模块必须包含, 它们是OpenWrt核心。如:实用基础库libubox、系统总线ubus、网络接口管