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           # 查看调用栈

posted @ 2023-03-20 20:20  Yihoyo  阅读(155)  评论(0)    收藏  举报