wsl2+gdbserver 调试开发板
硬件设备:
远程linux开发服务器,winsdows +wsl2 ubuntu20.04/22.04
先决条件
映射开发机器samba到wsl
第一步:编译gdbserver放入设备端
1. 安装构建依赖
sudo apt update
sudo apt install -y build-essential texinfo libexpat1-dev
2. 下载 GDB 源码(以 13.2 为例,可替换版本)
cd ~
wget https://ftp.gnu.org/gnu/gdb/gdb-13.2.tar.xz
tar -xf gdb-13.2.tar.xz
3. 只构建 gdbserver
cd gdb-13.2/gdb/gdbserver
./configure --host=arm-linux-gnueabihf --prefix=/opt/atk-dlrv1126-toolchain/arm-linux-gnueabihf/libc/usr --enable-static --enable-shared
make
4. 生成的 gdbserver 位于当前目录,推送到目标设备
adb push gdbserver /usr/bin
adb shell chmod 755 /usr/bin/gdbserver
5 运行gdbserver
gdbserver :1234 ./main_example
第一步:安装 Ubuntu 20.04(安装过请忽略)
1. 以管理员身份打开 PowerShell
启动 Ubuntu 并安装必要工具
启动 Ubuntu
wsl -d Ubuntu-20.04
在 Ubuntu 中执行
sudo apt update
sudo apt install -y android-tools-adb gdb-multiarch
第三步:通过 USB 共享设备到 WSL(USB ADB 必须)
在 Windows PowerShell(管理员) 中操作:
# 1. 查看 USB 设备,找到 Android ADB Interface 的 BUSID(假设为 4-2)
usbipd list
# 2. 必要时先卸载旧的共享
usbipd detach --busid 4-2
#windows 退出adb避免占用
adb kill-server
# 3. 重新绑定(遇到 nxusbf 警告时加 --force)
usbipd bind --busid 4-2 --force
# 4. 保持一个 WSL 终端处于运行状态,然后附加到 Ubuntu-20.04
wsl -d Ubuntu-20.04 # 保持此窗口不要关闭
usbipd attach --busid 4-2 --wsl Ubuntu-20.04 //可能一次不行要多执行几次
# 5. 再次确认状态
usbipd list # 应显示 Attached
回到 **WSL 终端** 中:
lsusb # 应看到 2207:0006 等设备
sudo adb kill-server
sudo adb start-server # 以 root 权限启动 adb,确保识别 USB
adb devices # 必须看到 device 条目后再继续
需要把设备切回 Windows 时(比如升级固件),在 PowerShell 中执行:
usbipd detach --busid 4-2
调试
1.打开一个wsl 窗口,adb连接到板子
adb devices
adb shell
然后运行:
gdbserver :1234 ./program
2.另外开一个wsl窗口,先转发:
adb forward tcp:1234 tcp:1234
# 启动 GDB
gdb-multiarch ./program
# 在 GDB 中连接远程
(gdb) target remote localhost:1234
(gdb) continue
##正常调试即可
常用调试命令
(gdb) break main # 设置断点
(gdb) continue # 继续执行
(gdb) step # 单步进入
(gdb) next # 下一行
(gdb) print variable # 查看变量
(gdb) info locals # 查看局部变量
(gdb) backtrace # 查看调用栈

浙公网安备 33010602011771号