使用gdbserver可以对目标设备上的程序进行远程调试。
gdbserver基本用法如下:
此时gdbserver监听端口号1234,并等待客户端连接。
然后就可以对目标设备的程序进行debug了。
最初在使用gdbserver的时候,我遇到了如下问题:
这个问题的核心是:在手机上运行的gdbserver是配置为面向arm架构的(arm-eabi-linux),而在PC端运行的gdb是配置为面向X86_64架构的。
查看gdbserver的版本信息:
可以看到目标设备的gdbserver面向的架构是 arm-eabi-linux ;
而我的PC上的gdb的架构是 "x86_64-unknown-linux-gnu" 。
所以,出现了上述问题。
解决方法
保证gdbserver和gdb配置的架构是一致。在PC端安装针对arm架构配置的gdb工具。
gdb:The GNU Debugger for the ARM EABI (bare-metal) target
在archlinux上解决方式是安装 arm-none-eabi-gdb
然后使用arm-none-eabi-gdb连接gdbserver就OK了。