ARM - PC 通过网络进行arm的gdb调试
碎念,gdb调试arm花去了断断续续几天的时间,网上虽然有很多文章,但都是基于一个英文文章翻译的,我按那篇文章操作,一直不成功,索性自己一点点试,终于试出点眉目
提示几个问题点
- 配置PC端的gdb的几个环境变量,这些环境变量的路径是PC的路径,我们要准备rootfs在PC上。这问问题很多文章里写了,但是没有强调,搞的人不知道环境变量路径是对应的PC的路径还是ARM的路径。
- 配置环境变量了,但是又配置的不够充分,有些库找不到。
- 找到了库,在调试过程中还会有调试到库的时候,没有debug信息,库没有debug信息会打印问号,这时我们是否需要进行处理。
前提假设
- PC系统是ubuntu,ip是192.168.2.202
- ARM系统是linux,ip是192.168.2.200
- ARM上安装了在PC上交叉编译的gdbserver,PC上安装了gdb-multiarch命令
- PC上保存有和ARM上同样的rootfs,PC上rootfs保存在本机 /home/tronlong目录下,名字为/home/tronlong/rootfs
- 待调试的程序名为kzx-xdl是在PC上交叉编译后的程序,gcc / g++ 编译时使用了-g选项
arm上执行
gdbserver 192.168.2.202:1234 ./kzx-xdl
ubuntu上执行
gdb-multiarch ./kzx-xdl (可用sudo 也 可不用sudo)
(gdb) set architecture arm
(gdb) set sysroot /home/tronlong/rootfs
(gdb) set solib-search-path /home/tronlong/ti-processor-sdk-linux-rt-am57xx-evm-04.03.00.05/linux-devkit/sysroots/x86_64-arago-linux/usr/lib:/home/tronlong/rootfs/lib
去除交叉编译工具链的库路径,改为:
(gdb) set solib-search-path /home/tronlong/rootfs/lib:/home/tronlong/rootfs/usr/lib
(gdb) set solib-absolute-prefix /home/tronlong/rootfs
(gdb